Например, посчитав появление слов в книге, я видел, как кто-то просто написал:
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;