Что выведет код 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 ошибок.