2011-04-11 8 views
32

파일의 단어 발생을 계산하는지도가 있습니다. 나는 파일에서 단어를 읽고있다, 나는 단어를 읽을 때마다 나는이 작업을 수행 할 수 :증가지도 <string, int> ++ 연산자를 사용합니다.

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

그래서 내지도 이미 키와 '단어'가있는 경우, 그것은 그렇지 않으면 그것을 증가한다는 새로운 키를 생성하고 그것을 증가시킵니다.

여기에 내가 우려하는 부분이있다. 첫 번째 단어에서 피할 수없는 새 키에 [word] ++를 매핑하면 내 맵의 int가 unitialized이기 때문에 내 프로그램이 중단됩니까? 그렇다면지도를 표시하는 가장 효율적인 방법은 무엇입니까? 단어가 ​​이미 있으면 값에 ++를 지정하고 그렇지 않으면 값 = 1로 새 키를 만드시겠습니까? 'map.find'와 함께 if 문을 사용하면 불필요하게 중복되는 것처럼 보입니다. 어떻게 생각하십니까?

감사

답변

36

은 내 프로그램 충돌 내지도의 INT가 초기화되지되어 있기 때문에?

아니오; 키가 word 인 요소가 없으면 요소가 만들어지고 값이 초기화됩니다. 값으로 초기화되는 int의 값은 0입니다.

+0

멋지다, 감사합니다! – Edoz

관련 문제