Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 28.11.2017
Сообщений: 55

Обращение к map, который внутри другого map

28.01.2020, 22:01. Показов 5625. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
std::map<int, std::map<std::string, int>> m1;
std::map<std::string, int> m2;
 
void main()
{
    m1[0] = m2;
    m2["enot"] = 7;
 
    printf("%d\n", m1[0]["enot"]); // Здесь надо вывести 7, используя m1.
}
Выдает 0.
Подскажите синтаксис, по логике же все верно делаю, m1[0] это m2 (другой map).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.01.2020, 22:01
Ответы с готовыми решениями:

Обращение к элементам vector, который находится в map, находящийся в map
Всем добрый день! Имеется такой контейнер. Как обращаться к элементам вектора и как пушбэчить его? map...

Поместить вектора в map и реализовать перегрузку вывода для map
Всем привет! Нужна помощь в написании программы. У меня есть вот такая прога и мне нужно каким-то образом поместить вектора в map и...

Map: обращение к значению (класс) через []
Всем добрый день. Подскажите пожалуйста почему в 14 строчке без пустого конструктора пример не компилится ? Ведь я обращаюсь к объекту...

8
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
28.01.2020, 22:11
stas39, вы копируете m2 в m1[0]:
C++
1
2
3
4
5
6
7
8
9
10
11
12
std::map<int, std::map<std::string, int>> m1;
std::map<std::string, int> m2;
 
void main()
{
    m1[0] = m2; // создать в m1 элемент с ключом "0" и скопировать в него m2
    m2["enot"] = 7; // создать в m2 элемент с ключом "enot" и скопировать в него "7"(m1[0] не меняется)
 
    printf("%d\n",
        m1[0]["enot"] // создать в m1[0] элемент с ключом "enot"
    );
}
1
0 / 0 / 0
Регистрация: 28.11.2017
Сообщений: 55
28.01.2020, 22:19  [ТС]
Цитата Сообщение от Max Dark Посмотреть сообщение
m1[0]["enot"] // создать в m1[0] элемент с ключом "enot"
m1[0] - логика говорит, что это обращение по индексу и в итоге извлечение значения, а оно равно m1 (указатель/объект на другой map).

В общем я хотел хранить в map другие map, похоже нельзя?
Может тогда нужно создать глобальный vector и в него помещать map объекты?
Хочу хранить динамические массивы в одном главном динамическом массиве.
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
28.01.2020, 22:25
stas39,

C++
1
2
3
4
5
6
7
8
std::map<int, std::map<std::string, int>> m1;
 
void main()
{
    m1[0]["enot"] = 7;
 
    printf("%d\n", m1[0]["enot"]); // Здесь надо вывести 7, используя m1.
}
C++
1
2
3
4
5
6
7
8
9
10
std::map<int, std::map<std::string, int>> m1;
std::map<std::string, int> m2;
 
void main()
{
    m2["enot"] = 7;
    m1[0] = m2;
 
    printf("%d\n", m1[0]["enot"]); // Здесь надо вывести 7, используя m1.
}
1
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
28.01.2020, 22:27
Цитата Сообщение от stas39 Посмотреть сообщение
В общем я хотел хранить в map другие map, похоже нельзя?
Почему же нельзя?
Можно получить ссылку на созданный map:
C++
1
auto & m2 = m1[0];
И заполнять используя уже ее
C++
1
m2["bober"] = 14;
1
0 / 0 / 0
Регистрация: 28.11.2017
Сообщений: 55
28.01.2020, 22:31  [ТС]
DrOffset, это наверно все равно не то, я же не могу извлечь m2 из m1 как map, и пройтись циклом по нему.
Да, это видно по вашему второму примеру, так что m2 не является таким же map, как и m1, он какая-то иллюзия, которая вводит в заблуждение, я думал внутри можно хранить реальные другие map.

--
Цитата Сообщение от Max Dark Посмотреть сообщение
Почему же нельзя?
Оп, сейчас проверю.
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
28.01.2020, 22:36
Цитата Сообщение от stas39 Посмотреть сообщение
это наверно все равно не то, я же не могу извлечь m2 из m1 как map, и пройтись циклом по нему.
Формулируйте вопрос четко и будет то

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
std::map<int, std::map<std::string, int>> m1;
 
int main()
{
    m1[0]["enot"] = 7;
    m1[0]["volk"] = 12;
    
    std::map<std::string, int> & m2 = m1[0];
    for(auto & v : m2)
    {
        printf("%s %d\n", v.first.c_str(), v.second); 
    }
}
1
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
28.01.2020, 22:37
Цитата Сообщение от stas39 Посмотреть сообщение
я же не могу извлечь m2 из m1 как map, и пройтись циклом по нему.
Легко:
C++
1
2
3
4
5
6
7
8
for(const auto &m2: m1)
{
    std::cout << m2.first << ':' << std::endl;
    for(const auto& val: m2.second)
    {
        std::cout << '\t' << val.first <<'=' << val.second << std::endl;
    }
}
1
0 / 0 / 0
Регистрация: 28.11.2017
Сообщений: 55
28.01.2020, 22:50  [ТС]
Да, работает, спс. Все сложности из-за непонимания синтаксиса.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.01.2020, 22:50
Помогаю со студенческими работами здесь

Map iterator обращение к предыдущему или последующему элементу
for(map&lt;string,int&gt;::iterator i = m.begin();i!=m.end();i++) if( (i+1) == m.end() ) cout &lt;&lt; &quot;End&quot;; Как сделать что-то...

Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std::map?
Здравствуйте. Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std map? Например: std::map...

Как вставить элемент и вывести элементы на экран в map<string, map<string,int>> ?
У меня есть map&lt;string, map&lt;string,int&gt;&gt;, в него надо добавить элементы (типа Ivanov potato 200) Использовать именно map&lt;string,...

Как вставить map в map
есть такой map map &lt; INT64 , map &lt;INT64 , map&lt; wArray , int &gt; &gt; &gt; tMenu; как его заполнить? пробовал так ...

Обращение к элементу коллекции map
Всем привет, есть коллекция map: map &lt;string, vector&lt;string&gt;&gt; mp; В ней содержатся следующие элементы: A : a,b,c,d,e B :...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru