얼레벌레

[C++][STL] map 본문

Coding/C++ STL 정리

[C++][STL] map

__Lucie__ 2022. 7. 5. 14:51

프로그래머스를 활용한 코딩테스트에서 많이 등장하는 map stl에 대해 정리하고 넘어가야겠다.

 

map STL 이란?

1. 개념

map 이란 각 노드가 key-value 쌍으로 이루어진 트리로 중복 허용되지 않는다.

pair로 저장되며, first가 key이고 second가 value이다.

 

2. 형태

map<key, value> m;

 

 

3. 정렬

기본 정렬은 key 기준 오름차순 정렬이다.

내림차순 정렬을 원하면 선언 시

map<int, int, greater> m;

이렇게 선언하자.

 

사용 방법

1. 헤더 추가 : map을 추가하고 사용하기.

#include <map>

2. map 선언하기

map<string, int> m;

위와 같이 선언을 했을 때 key값이 string형이고, value 값이 int형이다.

 

3. search

map STL은 search 시 iterator를 사용한다.

만약 끝까지 봤는데도 찾지 못한다면 iterator는 map.end() 를 반환한다.

if( m.find("shine") != m.end() ) {
	cout << "Found!" << endl;
}
else {
	cout << "Not found" << endl;
}

4. insert

map은 중복을 허용하지 않는다. 

그래서 insert 시 넣으려고 하는 key 값이 이미 있는 경우 insert를 하지 않는다.

m.insert({"Lucie", 25});

5. 반복문을 통한 데이터 접근 : iterator와 반복문을 활용해 map 데이터에 접근한 코드이다.

for(auto iter = m.begin(); iter != m.end(); iter++) {
	cout << iter->first << " " << iter->second << endl;
}
for(auto iter : m) {
	cout << iter->first << " " << iter->second << endl;
}

6. erase

  • 특정 위치에 있는 요소 삭제
    m.erase(m.begin() + 2);
  • key 값을 가지고 삭제
    m.erase("shine");
  • 범위를 사용해 모든 요소 삭제
    m.erase(m.begin(), m.end());
  • clear 함수를 사용해 모든 요소 삭제
    m.clear();