unordered_map은 해시 테이블 기반의 STL로 키를 해시함수를 통해 인덱스가 정해지며
O(1)로 요소에 빠르게 접근할 수 있다.
<map>과 달리 순서는 정렬되지 않지만 동일하게 키의 중복을 허용하지 않는다.
unordered_set은 unordered_map과 동일한 자료구조이지만 키 : 값이 아닌 고유한 값만을 저장한다.
#include <iostream>
#include <unordered_map>
int main()
{
std::unordered_map<int, int> unorderedMap;
// 해시맵에 요소를 삽입 한다.
unorderedMap[0] = 5;
unorderedMap.insert(std::make_pair(1, 1));
// 모던 c++방식 initializer_list
unorderedMap.insert({ 2, 5 });
// 해시맵의 모든 요소를 삭제
unorderedMap.clear();
// 해시맵의 요소의 갯수를 반환
const size_t size = unorderedMap.size();
// 해시맵이 비어있는지 확인
const bool isEmpty = unorderedMap.empty();
// 해시맵의 버킷 수를 반환
const size_t bucket = unorderedMap.bucket_count();
// 해시맵의 키를 검색한다.
unorderedMap.find(0);
// Iterator를 통한 순회
std::unordered_map<int, int>::iterator uMapIter = unorderedMap.begin();
for (; uMapIter != unorderedMap.end(); ++uMapIter)
{
std::cout << uMapIter->second << std::endl;
}
return 0;
}
std::unordered_map의 내장 함수 시간복잡도, std::unordered_set도 동일
| 함수 | 시간 복잡도 | 설명 |
| erase() | O(1) | 특정 키에 해당하는 요소를 삭제 |
| find() | O(1) | 특정 키에 해당하는 요소를 반환 |
| clear() | O(1) | 모든 요소를 삭제 |
| size() | O(1) | 해시맵의 요소의 갯수를 반환 |
| empty() | O(1) | 해시맵이 비어있는지 확인 |
'C, C++' 카테고리의 다른 글
| shared_ptr (0) | 2023.07.16 |
|---|---|
| unique_ptr (0) | 2023.07.15 |
| <map>, <set> (0) | 2023.07.10 |
| <string> (0) | 2023.07.08 |
| <array> (0) | 2023.07.07 |