2016-04-23 2 views
-2

я пытаюсь создать Multimap из структур, я декларируют-структуруСоздание MultiMap из структур

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

создал Multimap

multimap< string , Student > classRoom; 

и создал функцию, которая должна толкать ее в Multimap

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

, если я использую типичный map это работает, но с использованием multimap это броски

error: no match for ‘operator[]’

Почему это происходит и как это можно сделать? Кроме того, как реализация отличается от этих двух?

ответ

3

Это не имеет никакого отношения к структурам; у вас будет такая же проблема с int (сузите свои проблемы!). Проблема в том, что вы не искали, как использовать multimap.

На карте оператор [] дает вам значение, соответствующее ключу.

В мультимаге, вся суть в том, что каждая клавиша может соответствовать нескольким значениям, поэтому не может быть оператора [].

Используйте вместо этого функцию insert.

Consult documentation для языковых функций, которые вы используете вместо того, чтобы гадать, то отказаться!

Смежные вопросы