ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • map
    자료구조 2022. 7. 27. 01:47
    728x90

    C++ 에서 사용할 수 있는 STL중 하나인 map입니다.

    먼저 map을 사용하기 위해서는 위와 같이 헤더파일을 입력해줍니다.

    map<key, value>map

    이런식의 선언으로 사용가능합니다.

    map은 pair 형태로 data가 저장되며 <key, value>로 이루어 집니다.

    map은 key의 중복값을 허용하지 않으며, 저장될 때는 key를 기준으로 자동적으로 오름차순으로 저장됩니다.

    저장되는 형태는 red-black tree형태로 저장됩니다.

    따라서 삽입이나 삭제를 할 때 시간복잡도가 O(log n)을 보장합니다.

     

    1) 선언

    key의 data type과 value의 data type을 결정할 수 있습니다.

    map<int, string>m1;
    map<string, int>m2;
    map<int, int>m3;
    map<string, string>m4;

    2) 삽입

    map<int, string>map1;
    map1.insert({ 1,"kang" });//key가 중복되지 말아야 함
    map1.insert({ 2,"yuseok" });
    map1.insert({ 3,"you like" });
    map1.insert({ 4,"sibal" });
    map1.insert({ 5,"manghetda" });

    다음과 같이 삽입 가능합니다.

    map<string, int>map2;
    map2.insert({ "kangyuseok",100 });
    map2["kangyuseok"] = 400;
    cout << map2["kangyuseok"]; //400출력

    다음과 같이 삽입된 값을 변경할 수 있습니다.

    map[key] = 변결할 value

     

    3) 검색

    find함수를 사용할 수 있습니다. (iterator를 반환)

    map.find(key)

    만약 key를 찾지 못하면 map.end() 를 반환합니다.

    map<int, string>map1;
    map1.insert({ 1,"kang" });//key가 중복되지 말아야 함
    map1.insert({ 2,"yuseok" });
    map1.insert({ 3,"you like" });
    map1.insert({ 4,"sibal" });
    map1.insert({ 5,"manghetda" });
    
    if (map1.find(5) != map1.end())
    	cout << "find"<<'\n'; //5가 있으므로 find출력
    else cout << "not find"<<'\n';

    4) 반복문 돌면서 data 접근(출력)

    map<int, string>map1;
    
    map1.insert({ 1,"kang" });//key가 중복되지 말아야 함
    map1.insert({ 2,"yuseok" });
    map1.insert({ 3,"you like" });
    map1.insert({ 4,"sibal" });
    map1.insert({ 5,"manghetda" });
    	
    for (auto iter : map1)
    	cout << iter.first << ' ' << iter.second << '\n';

    5) 삭제

    key값을 기준으로 삭제

    map1.erase(key);

    전체 삭제

    map1.erase(map1.begin(), map1.end());
    map1.clear();

     

Designed by Tistory.