13. c++ STL map

han811·2021년 4월 28일
0

c++

목록 보기
13/14
post-thumbnail
  • map<key,value>로 key에 해당하는 value도 같이 저장하는 컨테이너 입니다.
  • 중복된 key 저장은 안됩니다.
  • find 메서드로 key를 찾고 []로 원소에 접근합니다.
  • 만약 key가 없다면 []는 default 생성자를 호출하여 key를 자동으로 생성하여 원소를 추가하여 줍니다.
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;

int main() {
    ///선언 및 초기화///
    map<int, int> d1;
    map<int, int> d2 = { {1,2},{3,4},{5,6} };

    cout << "d1.size=" << d1.size() << '\n';    //0
    cout << "d2.size=" << d2.size() << '\n';    //3

    d1[10] = 20;    //d1[key]=value
    cout << "d1[10]=" << d1[10] << '\n';    //20
    cout << "d2[1]=" << d2[1] << '\n';    //2
    cout << "d2[2]=" << d2[2] << '\n';    //0
    cout << "d2[3]=" << d2[3] << '\n';    //4
    cout << "d2[4]=" << d2[4] << '\n';    //0
    cout << "d2[5]=" << d2[5] << '\n';    //6

    ///[]연산 주의///
    d1.clear();
    d2.clear();

    for (int i = 1; i <= 9; i += 2) {
        d1[i] = i * i;
        d2[i] = i * i;
    }

    cout << "d1.size=" << d1.size() << '\n';    //5
    cout << "d2.size=" << d2.size() << '\n';    //5

    for (int i = 1; i <= 10; i++)
        if (d1[i]) cout << i << ' ';
    cout << '\n';

    for (int i = 1; i <= 10; i++)
        if (d2.count(i)) cout << i << ' ';
    cout << '\n';

    cout << "d1.size=" << d1.size() << '\n';    //10 []연산으로 자동추가됨
    cout << "d2.size=" << d2.size() << '\n';    //5

    ///for문 iterator///
    map<int, int> d = { {1,2},{3,4},{5,6} };

    for (auto it = d.begin(); it != d.end(); ++it)
        cout << (it->first) << ' ' << (it->second) << '\n';

    for (auto p : d)
        cout << p.first << ' ' << p.second << '\n';

    return 0;
}

reference

profile
han811

0개의 댓글