[c++] map

jw·2022년 8월 29일
0

📘 코테 준비 📘

목록 보기
25/37

key와 value형태로 이루어져 있고 레드-블랙트리라는 구조를 내장
"뉴진스" : attention, "아이브" : afterLike
map을 순회할 때는 key값을 first, value값은 second로 탐색이 가능

unordered_map

정렬을 보장 x

map

정렬을 보장
map<string, int>

find

map의 find 메소드는 찾지 못하면 end() 이터레이터를 반환

    map<string, int> m1;
    m1.insert({"뉴진스", 1});
    m1["아이브"] = 2;

    // map의 find 메소드는 찾지 못하면 end() 이터레이터를 반환
    auto search = m1.find("뉴진스");
    if (search != m1.end())
    {
        cout << "찾음";
    }

참조만 해도 값이 생긴다

map의 경우 해당 인덱스에 참조만 해도 맵에값이생기며맵의요소가생기게된다. int형 같은 경우 0으로. string 같은 경우 빈문자열로 들어감.

int main()
{
    map<int, int> mp;
    map<string, string> mp2;
    
//참조 전
    cout << mp[1] << "\n";
    cout << mp2["aaa"] << "\n";

/*출력 
0
 (빈문자열)
*/

//참조 후

    for (auto i : mp)
        cout << i.first << " " << i.second << "\n";
    for (auto i : mp2)
        cout << i.first << " " << i.second << "\n";
}

/*출력 
1 0
aaa (빈문자열)

mp[1]을 이전에 참조했기 때문에 mp[1]에 0이라는 값이 생겼고
aaa mp2["aaa"]를 이전에 참조했기 때문에 mp2["aaa"]에 빈문자열이 생겼다
}
*/

이를 활용해서 “맵에 요소가 있는지 없는지"를 확인하고 맵에 데이터를 할당하는 부분의 로직을 짤 수 있다.

int main()
{
	map<int, int> mp;
    map<string, string> mp2;

    if (mp[1] == 0)
    {
        mp[1] = 2;
    }
    
    for (auto i : mp)
        cout << i.first << " " << i.second << "\n";
}
profile
다시태어나고싶어요

0개의 댓글