c++ map 에서 iterator를 사용할때 볼 수 있는 '->' (arrow operator)에 관하여.

hash를 이용한 unordered_map의 경우, hash 를 사용하기 때문에 순서를 정할 수 없어서 iterator에 대한 사용을 볼 수 없었는데, 

이진탐색트리를 이용한 map의 경우는 키-값 쌍에서 키값에 대해서 순서를 가지면서 자료들이 담기기 때문에 이에 대해서 iterator를 사용하여서 순서를 따라가면서 원소들에 접근할 수 있고, 이때에 iterator를 사용할때에 -> (arrow operator, 화살표 연산자) 를 사용하여서 각각의 pair의 first 와 second에 접근할 수 있다. 

이걸 사용하는 코드를 접하게 되었고, 

그 코드를 첨부해보면, 

void map_example(){
    map<string, int> m;
    m["hi"] = 123;
    m["bkd"] = 1000;
    m["gogo"] = 165; //("bkd",1000),("gogo",165),("hi",123)=>순서를 나타내고, 이 순서들은 key 값의 순서로 결정된다. 
    cout<<m.size()<<'\n'; // 3
    m["hi"] =-7; // ("bkd", 1000), ("gogo", 165), ("hi", -7)
    if(m.find("hi")!=m.end()) cout<<"hi in m\n";
    else cout<< "hi not in m\n";
    m.erase("bkd"); // ("gogo",165), ("hi", 123)
    for(auto e: m)
        cout<<e.first<<' '<<e.second<<'\n';
    auto it1=m.find("gogo");
    cout<<it1->first<<' '<<it1->second<<'\n';

}

이런 형태의 코드에서 맨 마지막에 

auto it1=m.find("gogo");

cout<<it->first<<' '<<it1->second<<'\n';

형태의 코드였다. 이와 관련하여서 ->(arrow operator , 화살표 연산자)에 대해서 내용을 첨부해보면 아래와 같다. 

순서에 따른 iterator를 통한 연산에서 키값과 밸류 값을 각각 사용하기 위해서 -> 사용도 떠올려보면서 프로그램을 작성해보도록 하자. 

 

  Comments,     Trackbacks