У меня есть карта, вложенная в другую карту, я хочу присвоить значения внешней карте, но я не совсем уверен, как это сделать. это приводит к сбою программы еще до ее начала. Я не показываю никаких ошибок при запуске, хотя
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));
Любая помощь поможет, спасибо
Ну, ваш 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
и emplace не имеет никакого эффекта в этом случае. Если вы хотите вместо этого добавить запись { 3, 1 }
к первой внутренней карте, так что теперь она содержит { { 2, 1 }, { 3, 1 } }
вместо этого вы можете использовать следующую конструкцию, которая выглядит намного лучше IMHO:
outer[1].emplace(2, 1);
outer[2].emplace(2, 1);
outer[3].emplace(2, 1);
outer[1].emplace(3, 1);