2015-07-31 2 views
2

У меня есть карта, вложенная внутри другой карты, я хочу присвоить значения внешней карте, но я не совсем уверен, как это сделать. это заставляет программу ломаться даже до ее начала. Я не показывает никаких ошибок, когда я запускаю его, хотякак назначить значения вложенной карте

map<int, map<int, int>> outer; 
map<int, int> inner; 


outer.emplace(1, make_pair(2, 1)); 
outer.emplace(2, make_pair(2, 1)); 
outer.emplace(3, make_pair(2, 1)); 

outer.emplace(1, make_pair(3, 1)); 

Любая помощь поможет спасибо

ответ

1

Ну, ваш mapped_type для внешней карты является map<int, int>, но вы пытаетесь построить его с pair<int, int>. Вы можете попробовать что-то вроде

outer.emplace(1, map<int,int>{ { 2, 1 } }); 
outer.emplace(2, map<int,int>{ { 2, 1 } }); 
outer.emplace(3, map<int,int>{ { 2, 1 } }); 

outer.emplace(1, map<int,int>{ { 3, 1 } }); 

Это имеет тот недостаток, что это некрасиво, и это не может быть даже то, что вы хотели: Последняя строка не имеет никакого эффекта, потому что уже есть значение для ключа 1, и В этом случае эффект не имеет никакого эффекта. Если вы имели в виду, чтобы вместо того, чтобы добавить запись { 3, 1 } к первой внутренней карте, так что он теперь содержит { { 2, 1 }, { 3, 1 } }, вы можете вместо этого использовать следующую конструкцию, которая выглядит гораздо приятнее ИМХО:

outer[1].emplace(2, 1); 
outer[2].emplace(2, 1); 
outer[3].emplace(2, 1); 

outer[1].emplace(3, 1); 
Смежные вопросы