http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNO=20&no=941434&ref=941434&page=1
안녕하세요
=> 답1
it 변수는 for 문 안에 선언된 변수이니 it->second 는 for 문 안에서 사용해야겠죠.
=> 추가질문
답변감사합니다ㅜㅠ 얼마나 기다렸는지.. for (std::multimap<string , float>::iterator it=ret.first; it!=ret.second; ++it){ std::cout << ' ' << it->second; avg += it; std::cout << '\n'; } } 중괄호가 빠져있었어요.. 그런데.. 중복된 key값에 해당하는 value값의 평균을 구하고 싶습니다. 그래서 우선 변수에 value들을 저장부터 해보려고 하는데 저 빨간색으로 칠한 부분에서 계속 빨간줄이 생깁니다.. c++ 1~100더하기 소스찾아보니까 +=이런식으로 쓰이던데..이 경우에는 안되나요? |
=>추가질문 답변 1-1
avg += it; 가 아니라 avg += it->second; 여야겠죠.
근데 처음 나오는 for 문도 불필요해보이고..전체적으로 문제가 좀 있네요.
avg 변수도 int 가 아니라 float 이어야겠구요.
C/C++ 기초 공부부터 차근차근 하셔야 할듯 합니다. |
=> 답2
멀티맵으로 하지 마시고....
그냥 맵으로 하시는게 좋습니다..
map<string, vector<float> > matchPlants ; 이렇게 하시면
equal_range()를 할 필요도 없이 matchPlants[key문자열]에....vector<float>로 저장할수 있습니다....
저장은..... matchPlants["사과"].push_back(7.30678); matchPlants["사과"].push_back(4.23077); ..
=>추가지문 아 그렇군요.. 제가 잘 몰라서 추가로 질문드립니다.. 그럼 vector로 저장된 것을 따로 떼서? 더할 수 있나요? (key값이 같은 value들의 평균을 구하고 싶어서요..) 저장하는 것의 경우 안에 내용을..일일이 적을 수는 없는데.. 아.. 이건 for문으로 어떻게 하면 될 것 같긴 하네요.. 답변 감사합니다! |
=>추가질문답
for()문 돌려서 처리하면 됩니다...^^
좀더 좋은 방식으로는......vector<>에 추가할때에.....
vector<>의 [0]인덱스에는 ...... 합계를 저장하는 곳으로 사용하면 좀더 좋겠지요.....
map<string, vector<float> > data;
data["사과"].push_back(12.3); data["사과"].push_back(12.3); // 벡터의 [0]과 [1]에..... 같은 값을 넣죠..
data["사과"].push_back(1.33456); // 벡터의 [2]에 1.33456이 추가되고.. data["사과"][0] += 1.33456; // [0]에 1.33456 값을 추가함.
..............
평균은........ float avg = data["사과"][0] / (data["사과"].size()-1) ;
-1은.. [0]번 인덱스는 빼줘야 하니까..
|
'나의질문답' 카테고리의 다른 글
c소스 질문있습니다... (0) | 2014.08.20 |
---|---|
map의 value를 수정하고 싶습니다. (0) | 2014.08.20 |
multimap의 value평균구하기 질문있습니다 (0) | 2014.08.18 |
텍스트파일을 읽어들여서 다차원 배열로 만들고 싶습니다 (0) | 2014.08.12 |
이미지 유사도 (0) | 2014.08.11 |