std::map을 반복문으로 돌려면?


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를 돌려면 어떻게 해야 되나요?

  • 2016년 01월 25일에 작성됨

조회수 362


1 답변


좋아요
0
싫어요
채택취소하기

iterator에서

  1. 외부의 map의 처음부터 끝까지 도는 for문 하나,
  2. 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
  • 2016년 01월 25일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close