#1. 개념
1. unordered_map
[정의] : unordered_map은 C++ STL에서 제공하는 연관 컨테이너입니다.
[특징] : unordered_map은 key와 value를 쌍으로 해시 자료구조에 저장합니다.
[map과 차이점] : unordered_map은 내부적으로 정렬 상태를 유지하지 않습니다.
#2. 선언 및 초기화
#include <unordered_map>
using namespace std;
int main()
{
// #1. 선언
unordered_map<int, int> um;
// #2. 초기화 리스트
unordered_map<int, int> um = {
{1, 10},
{2, 20},
{3, 30}
};
}
Details
1. [정렬 기준] : um 컨테이너는 map 컨테이너와 달리 내부적으로 정렬 작업을 수행하지 않습니다!
#3. 탐색
1. 순회
std::unordered_map<std::string, int> umap = {
{"apple", 1},
{"banana", 2},
{"cherry", 3}
};
for (auto it = umap.begin(); it != umap.end(); ++it) {
std::cout << "Key: " << it->first << ", Value: " << it->second << std::endl;
}
Details
1. pair 형식 : 반복자를 활용해 unordered_map을 순회할 때, 반복자는 pair 형식의 원소를 가리킵니다.
2. 접근
std::unordered_map<std::string, int> umap = {
{"apple", 1},
{"banana", 2},
{"cherry", 3}
};
// #1. operator[] : Key 값이 존재하는 것을 확실히 알고 있을때
int val = umap["banana"];
std::cout << "Value of 'banana': " << val << std::endl;
// #2. find() : Key 값의 존재여부가 불확실 할 때
auto it = umap.find("banana");
if (it != umap.end()) {
std::cout << "Value of 'banana': " << it->second << std::endl;
} else {
std::cout << "'banana' not found" << std::endl;
}
Details
1. operator [] : Key를 통해 Value에 접근할 수 있습니다. 다만, Key값이 분명히 존재할 때 활용!
2. find() : Key 값이 존재하는지 불분명할 때 활용!
#4. 삽입/제거
// #1. insert()
um.insert({3, 5}) or um.insert(make_pair(3,5));
// #2. operator[]
um[3] = 5;
// #3. erase(K)
um.erase(3);
// #4. erase(it)
auto it = um.find(3);
if(it != um.end())
um.erase(it);
'언어 > Basic C++' 카테고리의 다른 글
[Basic C++] #73_transform 알고리즘 (0) | 2024.04.17 |
---|---|
[Basic C++] #74_nth_element (0) | 2024.04.17 |
[Basic C++] #71_multiset (0) | 2023.12.15 |
[Basic C++] #70_decltype (0) | 2023.08.10 |
[Basic C++] #69_priority_queue (0) | 2023.06.22 |