2012-04-02 8 views
2

제 질문은 멀티 맵을 만들었습니다. 여기에 부분 코드가 있습니다.멀티 맵에서 값을 수정하는 방법은 무엇입니까?

 if(binary_search(final.begin() , final.end() , answer)) 
      { 

      final[answer] =  

      } 
      else 
      { 
       final.insert(pair<string,int>(answer , 1)); 
      } 

여기에서 대답은 문자열이고 마지막은 <string,int>의 다중 매핑입니다. 이제 내가 원하는 것은 문자열 응답이 존재하면 int의 값을 증가 (수정)하는 것입니다. 어떻게해야합니까? 문자열 요소가 이미있는 경우 int 값을 1 씩 증가 시키려고합니까?

감사합니다.

+1

'++ 최종 [답]은'string' 요소가 한 번 이상 존재하는 어떤 경우' – jrok

+1

? 모든 값 또는 값 중 하나를 증가시겠습니까? –

+0

나는 그것이 한 번 이상지도에 존재할 수 없다는 것을 확신시켰다. – InspiredCoder

답변

2

키를 고유하게하려면 map을 사용하십시오. 그러면 간단히 final[answer]++을 할 수 있습니다. map::operator[] 키가 이미 존재하지 않으면지도에 삽입합니다. 값은이 삽입 중에 디폴트로 구축되어이 디폴트 구축 치에의 참조가 돌려 주어집니다. 키가 이미 존재하면 value 요소에 대한 참조를 반환합니다.

+0

오 예 :) 이제지도에서 어떻게 검색하나요? – InspiredCoder

+0

특별히 pre-incremented 값이 필요하지 않는 한'++ final [answer]'가 선호하는 증가 방법입니다. – Chris

+0

@InspiredCoder :'map :: find'를 사용하십시오. – Naveen

0

키가 유일한 경우 std::map을 사용하십시오.

멀티 맵이 필요한 경우 (즉 에 동일한 키가 여러 개있는 개의 항목이 필요함)? std::lower_bound :

multimap::iterator it = mmap.lower_bound(key); 
while (it != mmap.end() && it->first == key) 
{ 
    // *it is a key-value pair, where you can modify the value 
    it->second.Modify(); 
} 
관련 문제