[C++] Map
Map
Map은 고유한 key를 기반으로 key와 value 쌍으로 이루어진 컨테이너이다. (key-value)
*레드 - 블랙 트리로 구현되어있어서 삽입, 삭제, 수정, 탐색이 O(logN)의 시간복잡도를 가진다.
Map은 자료를 저장할 때 내부에서 자동으로 오름차순으로 정렬하고 고유한 key 값을 갖기 때문에 하나의 key 값에 중복된 값이 들어갈 수 없으며 대괄호 연산자 []로 해당 키로 직접 참조가 가능하다.
C++ 에서 Map 사용
#include<map>
map<key타입, value타입> 이름
#include<map>
map<string,int> mp;
*레드-블랙트리 : 균형 이진 검색 트리이며, 삽입, 삭제, 수정, 탐색에 O(logN)의 시간 복잡도가 보장된다.
insert({key,value}) : map에 key와 value를 집어 넣는다.
string str[] = {"A", "B", "C"}; // str = A B C
map<string, int> mp;
for(int i =0; i < 3; i++){
mp.insert({a[i], i + 1}); // mp
mp[a[i]] = i + 1;
}
[key] = value : []를 통해 key에 해당하는 value를 할당한다.
[key] : []를 통해 key를 기반으로 map에 있는 요소 참조 => 해당하는 요소가 없다면 0 또는 빈문자열로 할당
size() : map에 있는 요소갯수 반환
erase(key) : 해당 키에 있는 요소 지움
mp.erase("C");
mp.erase(mp.begin()+1);
mp.erase(mp.begin(), mp.end());
find(key) : map에서 해당 key를 가진 요소를 찾아 이터레이터 반환, 못 찾을 경우 해당맵의 end() 이터레이터 반환
auto a = mp.find("D");
if(it == mp.end()){ // 못찾고 mp.end()를 반환했으면
cout << "못 찾았다" << endl;
}
else{ // 찾았으면
cout << "찾았다" << endl
}
for(auto it : map) : map에 있는 요소들을 순회, key는 first, value는 second로 참조
for(auto it = mp.begin() ; it != mp.end() ;it++)
for (auto iter = m.begin() ; iter != m.end(); iter++)
{
cout << iter->first << " " << iter->second << endl;
}
cout << endl;
mp.clear() : map에 있는 요소 전부 제거