C++ STL - map

less than 1 minute read

map container?

  • 노드 기반으로 이루어진 이진트리구조
  • key 와 value 쌍으로 이루어졌으며 pair 객체로 저장된다. first = key, second = value
  • key는 고유한 값으로 중복이 불가능하다.
  • 삽입이 되면서 자동으로 정렬되며 default 는 오름차순이다. 내림차순으로 정렬하고 싶다면 비교함수에 “greater” 를 전달한다. ex) map<int, int, greater> m

map 사용법

<map> 헤더파일을 포함한다.

기본 형태

map<type-key, type-value> name;
  • map 에 삽입을 위한 insert 함수는 pair 객체를 인자로 받아야한다.
m1.insert(pair<int, int>(10,20));
m2.insert(pair<string, int>("Bokyoung", 26));
  • 배열의 인덱스 접근방법처럼 인덱스 대신 key를 이용하여 원소를 추가 또는 수정이 가능하다.
map<string, int> m;
m["Bokyoung"] = 26;

멤버함수

m.begin();
m.end();
m.empty();
m.insert(pair<type1, type2>);
m.insert(iter, pair<type1, type2>);
m.erase(start, end);
m.size();
m.find(key); // 해당 요소를 찾으면 해당 요소에 대한 iterator 반환. 발견되지 않으면 m.end() 반환

범위 기반 반복문

  • 기존의 for 반복문과는 달리 시작과 끝점이 없어도 알아서 처음부터 끝까지 순회하는 반복문
  • 배열, vector와 같은 데이터리스트에서 사용할 수 있으며 데이터리스트 앞에 “:”(콜론)을 반드시 붙여줘야한다.
map<int,int> m;
for(auto iter:m)
{
    cout << iter.first << iter.second;
}
  • 변수 iter에는 데이터리스트(이번 경우는 map)의 원소가 복사된다. 따라서 직접적인 값의 변경은 불가능하다.

Categories:

Updated:

Leave a comment