std::map을 반복문으로 돌려면?
조회수 6361회
std::map< std::string, std::map<std::string, std::string> >
형에
m["name1"]["value1"] = "data1";
m["name1"]["value2"] = "data2";
m["name2"]["value1"] = "data1";
m["name2"]["value2"] = "data2";
m["name3"]["value1"] = "data1";
m["name3"]["value2"] = "data2";
가 있고,
name1
~name3
까지 for를 돌려면 어떻게 해야 되나요?
1 답변
-
iterator에서
- 외부의 map의 처음부터 끝까지 도는 for문 하나,
- map안의 map을 처음부터 끝까지 도는 for문 하나,
이렇게 for문을 2개 써야 합니다.
int main(){ std::map< std::string, std::map<std::string, std::string> > m; m["name1"]["value1"] = "data1"; m["name1"]["value2"] = "data2"; m["name2"]["value1"] = "data1"; m["name2"]["value2"] = "data2"; m["name3"]["value1"] = "data1"; m["name3"]["value2"] = "data2"; typedef std::map<std::string, std::map<std::string, std::string>>::iterator outmap; //첫 번째 map을 이터레이션 for(outmap iterator1 = m.begin(); iterator1 != m.end(); iterator1++) { cout << iterator1->first << endl; typedef std::map<std::string, std::string>::iterator inmap; //2번째 map을 이터레이션 for(inmap iterator2 = (iterator1->second).begin(); iterator2!=(iterator1->second).end(); iterator2++ ){ cout << iterator2->first << " " << iterator2->second << endl; } } }
결과 :
name1 value1 data1 value2 data2 name2 value1 data1 value2 data2 name3 value1 data1 value2 data2
댓글 입력