STL - map

Dohun Lee·2025년 8월 12일

C/C++

목록 보기
31/34

map

map 컨테이너는 vector, list와 다르게 연관 컨테이너라는 종류에 속한다. map은 vector, list의 단점인 원하는 데이터에 빠르게 접근할 수 없다는 점을 극복할 수 있다.

vector와 list등의 시퀀스 컨테이너가 원하는 원소를 찾기위해 컨테이너를 처음부터 순회 하는 것과 달리, map은 key를 통해 원하는 원소를 빠르게 얻을수 있다.

map의 내부 구현

map의 내부는 노드들로 구성되어 있는데, 이 노드는 key와 value 쌍을 가진다. 또한 map은 균형 이진 트리 (AVL)로 구현되어있다.

map의 원소 추가

map의 내부 데이터는 key와 value 쌍으로 이루어져 있는데, 이는 pair 라는 타입으로 구현된다. pair는 같거나 다른 두개의 타입을 하나로 묶은 타입이다.

map은 map<key type, value type> 형태로 선언 할수있고, pair는 pair<key type, value type> 형태로 선언 할 수 있다. map의 key에는 단 하나의 value만 존재할수 있다. 즉, key:value는 1:1 관계이다.

map에는 insert 혹은 [] 연산자를 통해서 값을 넣을수 있다. 먼저, insert는 key, value의 pair 값을 넣어서 컨테이너에 추가한다.

[]연산자는 map[key] = value의 형태로 값을 추가 할 수 있다. 만약, 해당 key에 값이 존재한다면, 추가가 아닌 값이 수정된다. 여기서 주의해야 할점은, 만약 value를 대입하지 않고 map[key] 이렇게만 사용해도 map 내부에 값이 존재하지 않는 경우엔 기본 값과 함께 map에 값이 추가된다는 점이다.

map의 원소 삭제

map.erase(key)를 통해서 원소를 삭제 할 수 있다. 이때, 해당 함수는 삭제한 원소의 개수를 반환한다. 그래서 만약 해당하는 키가 없어도 오류가 발생하지 않고 0을 반환한다.

map의 원소 접근

map 내부의 원소에는 map.find(key)와 map[key]로 접근 할수있다. map.find(key)는 찾은 원소를 가르키는 반복자를 반환하는데, 만약 찾는 원소가 컨테이너 내부에 존재하지 않는다면, end() 반복자를 반환한다.

map의 순회

map은 다른 컨테이너들과 같이 반복자를 이용해서 순회 할 수 있다. map 내부 원소의 순서는 경우에 따라 다르게 나열되는데, 보통 오름차순 혹은 내림차순으로 나열된다.

profile
미국 공대생

0개의 댓글