карта приращения <string, int> с использованием оператора ++ - PullRequest
46 голосов
/ 11 апреля 2011

У меня есть карта для подсчета появления слов в файле. Я читаю слова из файла, и каждый раз, когда я читаю слово, я хочу сделать это:

map[word]++; //(where map is the name of my map, I'm not using map as a name of course)

, так что если моя карта уже содержит слово в качестве ключа, оно увеличивает его, в противном случае создает новый ключ и увеличивает его.

Вот где я обеспокоен: если я сопоставлю [word] ++ с новым ключом (что неизбежно при первом чтении слова), произойдет ли сбой моей программы, поскольку int в моей карте унифицирован? Если да, то каков наиболее эффективный способ сообщить мою карту: если слово уже существует, введите ++ для значения, в противном случае создайте новый ключ со значением = 1? Использование оператора if с map.find здесь представляется излишне излишним, как вы думаете?

Спасибо

1 Ответ

57 голосов
/ 11 апреля 2011

произойдет ли сбой моей программы, потому что int в моей карте унифицирован?

Нет; если элемент с ключом word не существует, элемент будет создан и значение инициализировано. Инициализированное значение int имеет значение 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...