2011-04-11 21 views
32

Tengo un mapa para contar la ocurrencia de palabras en un archivo. estoy leyendo las palabras del archivo, y cada vez que leo una palabra de lo que desee hacer esto:mapa de incremento <string, int> usando el operador ++

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

modo que si el mi mapa ya tiene 'palabra' como una clave, se incrementa, de lo contrario crea la nueva clave y la incrementa

Aquí es donde estoy preocupado: si hago un mapa de [palabra] ++ en una nueva clave (que es inevitable en la primera palabra leída), ¿se bloqueará mi programa porque el int en mi mapa está unificado? Si es así, ¿cuál es la forma más eficiente de contar mi mapa: si la palabra ya está allí, haga ++ en el valor, de lo contrario, cree la nueva clave con value = 1? Usar una instrucción if con 'map.find' aquí parece innecesariamente redundante, ¿qué opinas?

Gracias

Respuesta

36

serán mi caída del programa porque se no inicializado el int en mi mapa?

No; si el elemento con la clave word no existe, el elemento se creará y el valor se inicializará. Un valor inicializado int tiene un valor de 0.

+0

genial, gracias! – Edoz

Cuestiones relacionadas