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<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)의 원소가 복사된다. 따라서 직접적인 값의 변경은 불가능하다.
Leave a comment