'map 컨테이너'는 연관 컨테이너 중 가장 많이 사용되는 컨테이너입니다. 'map 컨테이너'는 (key, value) 쌍을 저장합니다. 이때, (key, value) 쌍을 저장하기 위해 'pair 객체'를 사용합니다. 'set 컨테이너'와 마찬가지로 key 값은 중복될 수 없습니다. 중복을 허용하고 싶다면 'multimap 컨테이너'를 사용해야 합니다. 모든 연관 컨테이너는 동일한 인터페이스를 제공하기 때문에 앞의 'set 컨테이너'에서 정리한 인터페이스를 참고바랍니다. 추가로, 'map 컨테이너'는 [] 연산자를 제공하기 때문에 간단히 원소를 저장하고 참조할 수 있습니다. 다음은 'map 컨테이너'의 구조입니다.

 

'map 컨테이너'의 insert() 멤버 함수를 통한 원소 삽입 예제를 살펴보겠습니다.

#include <iostream>
#include <map>
using namespace std;

void main() {
    map<int, int> m; // (key, value) 쌍이 각각 (int, int) 타입을 가지도록 생성합니다.
    
    m.insert(pair<int, int>(5, 100)); // 임시 pair 객체를 매개변수로 넘깁니다.
    m.insert(pair<int, int>(3, 100));
    m.insert(pair<int, int>(8, 30));
    m.insert(pair<int, int>(4, 40));
    m.insert(pair<int, int>(1, 70));
    m.insert(pair<int, int>(7, 100));
    
    pair<int, int> pr(9, 50);
    m.insert(pr); // 물론, pair 객체를 직접 생성한 후 매개변수로 넘겨도 상관없습니다.
    
    for (auto iter = m.begin(); iter != m.end(); ++iter) {
        // 값에 접근하는 방법은 2가지가 있습니다.
        cout << "(" << iter->first << ", " << iter->second << endl;
        cout << "(" << (*iter).first << ", " << (*iter).second << endl;
    }
}