Что выведет код Junior Контейнеры STL изнутри спрашивают часто обновлено

Что выведет: map и operator[]

Вопрос

Что выведет программа (C++20, g++ 14)? Каждый вывод с новой строки, как в консоли.

#include <iostream>
#include <map>
#include <string>

int main() {
    std::map<std::string, int> m;
    if (m["a"] == 0) std::cout << "zero\n";
    std::cout << m.size() << '\n';
    std::cout << m.count("b") << ' ' << m.size() << '\n';
    m.insert({"a", 5});
    std::cout << m["a"] << '\n';
    m.insert_or_assign("a", 7);
    std::cout << m.at("a") << '\n';
}

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: zero, 1, 0 1, 0, 7. m["a"] вставляет ключ со значением 0: печатается zero, размер 1. count не вставляет: 0 и размер всё ещё 1. insert не перезаписывает существующий ключ, значение остаётся 0. insertorassign перезаписывает: 7.

Что выведет

zero
1
0 1
0
7

Разбор

m["a"] вставляет ключ со значением 0: печатается zero, размер 1. count не вставляет: 0 и размер всё ещё 1. insert не перезаписывает существующий ключ, значение остаётся 0. insert_or_assign перезаписывает: 7.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.