-
728x90
C++ 에서 사용할 수 있는 STL중 하나인 map입니다.
먼저 map을 사용하기 위해서는 위와 같이 헤더파일을 입력해줍니다.
map<key, value>map
이런식의 선언으로 사용가능합니다.
map은 pair 형태로 data가 저장되며 <key, value>로 이루어 집니다.
map은 key의 중복값을 허용하지 않으며, 저장될 때는 key를 기준으로 자동적으로 오름차순으로 저장됩니다.
저장되는 형태는 red-black tree형태로 저장됩니다.
따라서 삽입이나 삭제를 할 때 시간복잡도가 O(log n)을 보장합니다.
1) 선언
key의 data type과 value의 data type을 결정할 수 있습니다.
map<int, string>m1; map<string, int>m2; map<int, int>m3; map<string, string>m4;
2) 삽입
map<int, string>map1; map1.insert({ 1,"kang" });//key가 중복되지 말아야 함 map1.insert({ 2,"yuseok" }); map1.insert({ 3,"you like" }); map1.insert({ 4,"sibal" }); map1.insert({ 5,"manghetda" });
다음과 같이 삽입 가능합니다.
map<string, int>map2; map2.insert({ "kangyuseok",100 }); map2["kangyuseok"] = 400; cout << map2["kangyuseok"]; //400출력
다음과 같이 삽입된 값을 변경할 수 있습니다.
map[key] = 변결할 value
3) 검색
find함수를 사용할 수 있습니다. (iterator를 반환)
map.find(key)
만약 key를 찾지 못하면 map.end() 를 반환합니다.
map<int, string>map1; map1.insert({ 1,"kang" });//key가 중복되지 말아야 함 map1.insert({ 2,"yuseok" }); map1.insert({ 3,"you like" }); map1.insert({ 4,"sibal" }); map1.insert({ 5,"manghetda" }); if (map1.find(5) != map1.end()) cout << "find"<<'\n'; //5가 있으므로 find출력 else cout << "not find"<<'\n';
4) 반복문 돌면서 data 접근(출력)
map<int, string>map1; map1.insert({ 1,"kang" });//key가 중복되지 말아야 함 map1.insert({ 2,"yuseok" }); map1.insert({ 3,"you like" }); map1.insert({ 4,"sibal" }); map1.insert({ 5,"manghetda" }); for (auto iter : map1) cout << iter.first << ' ' << iter.second << '\n';
5) 삭제
key값을 기준으로 삭제
map1.erase(key);
전체 삭제
map1.erase(map1.begin(), map1.end());
map1.clear();
'자료구조' 카테고리의 다른 글
Chpter 6-1 : Graph (DFS & BFS) (0) 2021.12.12 Chapter 5-5 : Tree (Disjointset(Union & Find)) (0) 2021.12.11 Chapter 5-4 : Tree (Binary Search Tree) (0) 2021.12.09 Chapter 5-3 : Tree (Heaps) (0) 2021.12.03 Chapter 5-1 : Tree (Binary Tree Traversal 이진 트리 순회) (0) 2021.11.29