#c #stdmap
#c #stdmap
Вопрос:
Например, подсчитайте вхождение слов в книгу, я видел, что кто-то просто написал:
map<string, int> count;
string s;
while (cin >> s) count[s] ;
Это правильный способ сделать это? Я тестировал на своей машине и, похоже, так. Но гарантируется ли инициализация нулем? Если это не так, я бы представил такой код:
map<string, int> count;
string s;
while (cin >> s)
if (count.find(s) != count.end()) count[s] ;
else count[s] = 1;
Ответ №1:
Да, operator[]
на a std::map
инициализирует значение с T()
помощью , которое в случае int
равно нулю.
Это задокументировано в разделе 23.4.4.3 стандарта C :
Tamp; operator[](const key_typeamp; x);
Эффекты: если в карте нет ключа, эквивалентного
x
int, вставляется
value_type(x, T())
в карту.