나의질문답

map의 value를 수정하고 싶습니다.

예쁜꽃이피었으면 2014. 8. 20. 10:51
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNO=20&no=941585&ref=941585&page=1

안녕하세요.또 질문을 드립니다.

지금 소스가 

for을 돌려서 map에 값을 하나씩 넣게 되어 있습니다.

(map <string, vector<float> >)

이 for문 안에서 key가출력되고

value가 출력됩니다.

 

그런데, key가 중복이 됩니다..

그래서 key가 같은 때, 기존 value값에  value를 더하고

key가 다르면 key와 value를 출력하고 싶습니다.


질문1. 이전에 저장된 key값과 지금 for문에서 만든 key값이 같다는 걸 어떻게 알 수 있나요..

초기화되는데

 

질문2. value값에 추가 할 수 있는 건가요?

matchPlants[plant].push_back (matchRate); 이렇게 데이터를 넣고 있는데

추가하는 방법이 따로 있나요?

 








=>답1

질문이 정확히 이해가 되지는 않지만..-_-;;

 

1. map 에서 key 는 고유한 값입니다.

그러므로 같은 key 는 한 번만 insert 될 수 있고, 이미 존재하는 key 는 find 메서드로 찾을 수 있습니다.

 

2. value 를 vector 타입으로 넣으셨으니 value 에 push_back 으로 값을 추가할 수 있는거죠.




=>추가질문

지금  실행하면 (예를 들어)

사과 => 10

사과 => 15

사과 => 23

배 => 12

배 => 35

배=> 26

이런 식으로 되는데,

바꾸고 싶은건  

사과 =>48         (10+15+23)

배 => 73           (12+35+26)
이렇게 나왔으면 싶습니다.

음.. 그러니까 해주신 말씀은..

find로 key를 찾아서

없으면 key를 새로 만들고

있으면

push_back으로 값을 추가하면 된다고 말씀해 주신거죠?



=>답1-1

네. 맞습니다. 

 

find 로 먼저 찾아서 없으면 insert, 있으면 기존 항목의 벡터 찾아서 push_back 하면 되겠죠.



반응형