-2

I am trying to create an multimap of structs , i have declared a struct

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

created a multimap

multimap< string , Student > classRoom;

and created a function that should push it in the multimap

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

if i use typical map this works , but using multimap this throws

error: no match for ‘operator[]’

Why is this happening and how can i fixt it? Moreover how does the implementation differ in these two?

user3706129
  • 229
  • 4
  • 15

1 Answers1

3

This has nothing to do with structs; you'd have the same problem with an int (narrow down your problems!). The problem is that you didn't look up how to use a multimap.

In a map, the [] operator gives you the value that corresponds to a key.

In a multimap, the whole point is that each key may correspond to multiple values, so there cannot be a [] operator.

Use the insert function instead.

Consult documentation for the language features that you use instead of guessing then giving up!

Lightness Races in Orbit
  • 378,754
  • 76
  • 643
  • 1,055