как присвоить значения вложенной карте

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

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));

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

2

Решение

Ну, ваш 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);
1

Другие решения


По вопросам рекламы [email protected]