한국의 메타몽
2020. 10. 15. 09:52
map
- Key와 Value를 쌍으로 자료를 보관하는 컨테이너.
- map은 자료를 저장할 때 내부에서 자동 정렬을 하고, hash_map은 정렬하지 않는다.
- 레드 블랙 트리 자료구조를 사용하며, 작은 값은 왼쪽 서브트리, 큰 값은 오른쪽 서브트리에 저장한다. (오름차순)
- 따라서 정렬이 필요하지 않은 곳에서 hash_map을 사용하는 것은 메모리 낭비이다.
- STL로 map과 iterator를 추가해야 한다.
map<자료형, 자료형> 변수명 (ex : map<string, int> map1 ) |
맵 생성 |
변수명.size() (ex : map1.size() ) |
맵의 사이즈 반환 |
변수명.empty() (ex : map1.empty() ) |
맵이 비어있으면 1(true), 아니면 0(false)를 출력 |
insert 방법 1 : 변수명[key] = value (ex : map1[1] = 'a' ) |
맵에 키와 값을 입력 |
insert 방법 2 : 변수명.insert({key, value}) (ex : map1.insert({2, 'b'}) ) |
맵에 키와 값을 입력 |
insert 방법 3 : 변수명.insert(pair<자료형,자료형>(key, value)) (ex : map1.insert(pair<int,int>(10,30)) ) |
맵에 키와 값을 입력 |
변수명.erase(key) | Map에서 Key값에 해당하는 원소를 삭제 |
변수명.clear() | 맵의 데이터를 모두 소거 |
map<자료형, 자료형>::iterator 변수명; (ex : map<int,char>::iterator cursor ) |
맵의 반복문 활용을 위한 변수 선언 |
변수명.find(key) | key값에 해당하는 iterator를 반환 |
변수명.count(key) | key값에 해당하는 원소들의 개수를 반환 |
#include <iostream>
#include <iterator>
#include <map>
using namespace std;
int main() {
map<int, char> map1;
map<int, char>::iterator cursor;
map1[1]='a';
map1[2]='b';
cout <<"KEY\tELEMENT"<<endl;
for(cursor = map1.begin(); cursor!=map1.end(); cursor++){
cout<<cursor->first;
cout<< '\t'<<cursor->second<<'\n'<<endl;
}
}
자료 출저 : appdividend.com/2019/07/05/c-map-tutorial-with-example-standard-template-library-stl/