본문 바로가기
C++ STL

[C++ STL] map, iterator를 통한 데이터 추가

by Junk_Seo 2018. 3. 18.
반응형

map에 iterator를 통한 데이터 추가 하는 방법

int main()
{
    std::map<int, int = ""> mData;
    int nId = 0;
    int nData = 10;

    for (int i = 0; i < 5; i++)
    {
        mData.insert(std::map<int, int = "">::value_type(nId, nData));
        nId += 2;
        nData += 2;
    }

    std::map<int, int = "">::iterator iter = mData.find(5);
    if (iter == mData.end())
    {
        mData.insert(iter, std::map<int, int = "">::value_type(5, 15));
        // mData.insert(std::map<int, int="">::value_type(5, 15));
    }
    else
    {
        printf("존재 \n");
    }
    
    iter = mData.begin();
    while (iter != mData.end())
    {
        printf("id : %d, data : %d \n", iter->first, iter->second);
        iter++;
    }

    return 0;
}

 

14행에서 find(5)를 통해 key가 5인 데이터를 찾고 그 iterator를 반환하는데, 그 값을 iter변수에 저장한다.

위 코드에서는 key가 5인 데이터가 없기 때문에 key값 5를 가지는 데이터가 들어갈 위치(nullptr)를 반환한다.

 

그리고 17행에서 "mData.insert(iter, std::map<int, int>::value_type(5, 15));"를 통해 key 값이 5이고 value가 15인 데이터를 추가하고 있다.

첫 번째 인자로 삽입될 위치의 iterator값을 주어 map을 처음부터 참조하여 들어갈 위치를 찾아가지 않고 추가할 수 있다.

 

18행의 주석 친 "mData.insert(std::map<int, int>::value_type(5, 15));"를 통해 추가하면 map의 처음부터 참조하여 key 값이 5인 데이터가 들어갈 위치를 찾고 추가하게 된다.

반응형

'C++ STL' 카테고리의 다른 글

[C++ STL] vector  (0) 2018.03.18