Map
1) Map의 정의
Map은 각 노드가 key와 value의 쌍으로 이루어진 트리입니다. (key의 중복을 허용하지 않습니다.)
Map은 데이터를 저장할 때 key를 기준으로 정렬하며 오름차순으로 정렬합니다.
Map의 내부 구현은 검색, 삽입, 삭제가 O(logn)인 레드블랙트리로 구성되어 있습니다.
레드블랙트리의 index numbering에 주의합니다.
2) Map의 사용
Map을 사용하기 위해서는 다음의 과정을 거쳐 사용하면 됩니다.
1. 헤더파일 추가 : #include <map>
2. using namespace std; (편의상)
3. map <[key의 data type], [value의 data type]> [변수 이름]
ex) map<string, int> m; -> key를 기준으로 오름차순 정렬
ex) map<string, int, greater> m; -> key를 기준으로 내림차순 정렬
3) Map의 함수
앞에서와 마찬가지로 제가 코딩하면서 사용할 기본적인 함수들만 추려보았습니다.
m.insert({"example", 3}) : map에 example(key)와 3(value)의 데이터 쌍을 삽입합니다.
insert 수행 시, key가 중복되면 insert가 수행되지 않습니다.
m.erase(2) : index 2에 있는 데이터 쌍을 삭제합니다.
m.erase("example") : "example"을 key로 가지고 있는 데이터 쌍을 삭제합니다.
m.clear() : map내에 있는 모든 데이터 쌍을 삭제합니다. ( = m.erase(m.begin(), m.end()) )
m.size() : map내에 있는 데이터 쌍의 갯수를 반환합니다.
m.begin() : 첫 번째 원소의 iterator를 반환합니다.
m.end() : 마지막 원소 다음의 iterator를 반환합니다.
m.find("example") : "example"을 key로 가지고 있는 iterator를 반환합니다.
위 3개의 함수들은 아직 iterator를 공부하지 않은 관계로 iterator를 학습한 후 다시 살펴보겠습니다.
위와 같이 간단하게 vector에 대해서 알아보았습니다.
Vector와 마찬가지로 Map에 대해서 공부할 때도 iterator에 대한 부분들이 많았습니다.
iterator를 학습한 후에 다시 살펴보도록 미뤄두겠습니다.
'C++' 카테고리의 다른 글
C++ STL next_permutation (0) | 2022.03.24 |
---|---|
C++ STL lower_bound, upper_bound (0) | 2022.03.23 |
C++ STL Iterator (0) | 2022.03.23 |
C++ STL Set (0) | 2022.03.22 |
C++ STL Vector (0) | 2022.03.21 |