Использование списка внутри карты С++

Можно ли использовать следующий синтаксис:

 std::map<int,std::list<int>> mAllData;

В тех случаях, когда значение ключа (int) будет идентификатором данных, а указанные данные могут иметь несколько типов, поэтому они сохраняют все их по отношению к указанному значению ключа. Я пытаюсь использовать его.

Ответ 1

std::map<int,std::list<int>> my_map;
my_map[10].push_back(10000);
my_map[10].push_back(20000);
my_map[10].push_back(40000);

Ваш компилятор может не поддерживать две скобки закрытия, находящиеся рядом друг с другом, поэтому вам может понадобиться std::map<int,std::list<int> > my_map.

С С++ 11 my_map можно более эффективно инициализировать:

std::map<int,std::list<int>> my_map {{10, {10000,20000,40000}}};

Кроме того, если вы просто хотите сохранить несколько значений для каждого ключа, вы можете использовать std:: multimap.

std::multimap<int,int> my_map;
my_map.insert(std::make_pair(10,10000));
my_map.insert(std::make_pair(10,20000));

И в С++ 11 это можно записать:

std::multimap<int,int> my_map {{10,10000},{10,20000}};