创建结构的多重映射

Creating multimap of structs

我正在尝试创建结构的多重映射,我已经声明了一个结构

struct Student{
   Student(){};
   Student( string n , int a ){
      name = name;
      age  = age;
   }
  string name;
  int age;
}

创建了一个多地图

multimap< string , Student > classRoom;

并创建了一个将其推送到多映射中的函数

void addStudent( string name , int age ){
 Student tmp( name , age );
 classRoom[ name ] = tmp;
}

如果我使用典型的 map 这有效,但使用 multimap 这会抛出

error: no match for ‘operator[]’

为什么会这样,我该如何解决?此外,这两者的实现方式有何不同?

这与结构无关; int 你会遇到同样的问题(缩小你的问题范围!)。问题是你没有查怎么用multimap

在地图中,[] 运算符为您提供对应于键的值。

在multimap中,重点是每个键可能对应多个值,所以不能有[]运算符。

改用insert函数。

请咨询documentation了解您使用的语言功能,而不是猜测然后放弃!