STL에서 제공하는 해시 자료구조이다. 검색(find or at)/삭제(erase)/삽입(insert)이 O(1)에 처리될 수 있다.
std::map보다 빠른 탐색을 할 수 있는 자료구조이며 이는 map은 내부가 이진탐색 트리로 이루어져 있으므로 탐색에서의 시간 복잡도가 O(logn)이다.
int main(){
unordered_map<string, string> CLASS;
CLASS.insert({"1", "엘리스"});
CLASS["2"] = "브라운";
...
}
1) insert({key, value}) 또는 insert(make_pair(key, value))
CLASS.insert({"1", "엘리스"});
CLASS.insert({"1", "마넬라"}); // 중복 키 허용x, 무시된다.
2) 대입 연산
CLASS["2"] = "브라운";
CLASS["2"] = "로빈"; // 중복 키 허용x, "로빈"으로 덮여쓰여짐.
1) at(key)
CLASS.insert({"1", "엘리스"});
cout << CLASS.at("1") << endl; // => 엘리스
CLASS.at("1") = "브라운";
cout << CLASS.at("1") << endl; // => 브라운
1) find(key)
CLASS.insert({"1", "엘리스"});
CLASS.insert({"2", "브라운"});
// 해당 키를 가진 원소를 가리키는 반복자 반환
auto it = CLASS.find("1");
cout << it->first << " " << it->second << endl; // => 1 엘리스
it++;
cout << it->first << " " << it->second << endl; // => 2 브라운
1) erase(key) 또는 erase(반복자)
CLASS.insert({"1", "엘리스"});
CLASS.insert({"2", "브라운"});
cout << CLASS.size() << endl; // => 2
// 삭제
CLASS.erase("1");
cout << CLASS.size() << endl; // => 1
// 삭제
// find 함수로 원소를 가리키는 반복자를 찾은 뒤 이를 전달
CLASS.erase(CLASS.find("2"));
cout << CLASS.size() << endl; // => 2
CLASS.insert({"1", "엘리스"});
CLASS.insert({"2", "브라운"});
CLASS.insert({"3", "마이콜"});
for(auto it = CLASS.begin(); it != CLASS.end(); it++){
cout << it->first << " " << it->second << endl;
}
// => 1 엘리스
// => 2 브라운
// => 3 마이콜