Notice
Recent Posts
Recent Comments
Link
얼레벌레
[C++][STL] map 본문
프로그래머스를 활용한 코딩테스트에서 많이 등장하는 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();