std:: unordered_map
|
헤더 파일에 정의됨
<unordered_map>
|
||
|
template
<
class
Key,
|
(1) | (C++11부터) |
|
namespace
pmr
{
template
<
|
(2) | (C++17부터) |
std::unordered_map
는 고유 키를 가진 키-값 쌍을 포함하는 연관 컨테이너입니다. 요소의 검색, 삽입 및 제거는 평균 상수 시간 복잡도를 가집니다.
내부적으로 요소들은 특정 순서로 정렬되지 않고 버킷으로 구성됩니다. 요소가 어떤 버킷에 배치되는지는 전적으로 해당 키의 해시에 따라 결정됩니다. 동일한 해시 코드를 가진 키들은 동일한 버킷에 나타납니다. 이는 해시가 계산되면 해당 요소가 포함된 버킷을 참조하므로 개별 요소에 대한 빠른 접근을 가능하게 합니다.
두 키는 맵의 키 동등성 술어가 해당 키들에 대해 전달되었을 때 true를 반환하는 경우 동등한(equivalent) 것으로 간주됩니다. 두 키가 동등한 경우, 해시 함수는 두 키 모두에 대해 동일한 값을 반환해야 합니다.
std::unordered_map
는
Container
,
AllocatorAwareContainer
,
UnorderedAssociativeContainer
요구 사항을 충족합니다.
std::unordered_map
의 모든 멤버 함수는
constexpr
입니다: 상수 표현식 평가에서
std::unordered_map
객체를 생성하고 사용하는 것이 가능합니다.
그러나 일반적으로
|
(C++26부터) |
목차반복자 무효화
참고 사항
템플릿 매개변수
멤버 타입
멤버 함수
비멤버 함수
참고 사항
예제
이 코드 실행
#include <iostream> #include <string> #include <unordered_map> int main() { // 문자열에 매핑되는 세 개의 문자열 unordered_map 생성 std::unordered_map<std::string, std::string> u = { {"RED", "#FF0000"}, {"GREEN", "#00FF00"}, {"BLUE", "#0000FF"} }; // 키-값 쌍을 출력하는 헬퍼 람다 함수 auto print_key_value = [](const auto& key, const auto& value) { std::cout << "Key:[" << key << "] Value:[" << value << "]\n"; }; std::cout << "unordered_map의 키-값 쌍을 반복하며 출력,\n" "명시적 타입 지정:\n"; for (const std::pair<const std::string, std::string>& n : u) print_key_value(n.first, n.second); std::cout << "\nC++17 구조적 바인딩을 사용하여 키-값 쌍 반복 및 출력:\n"; for (const auto& [key, value] : u) print_key_value(key, value); // unordered_map에 두 개의 새 항목 추가 u["BLACK"] = "#000000"; u["WHITE"] = "#FFFFFF"; std::cout << "\n키로 값 출력:\n" "RED 색상의 HEX 값:[" << u["RED"] << "]\n" "BLACK 색상의 HEX 값:[" << u["BLACK"] << "]\n\n"; std::cout << "존재하지 않는 키로 operator[]를 사용하여 새 키-값 쌍 삽입:\n"; print_key_value("new_key", u["new_key"]); std::cout << "\n`auto`를 사용하여 키-값 쌍 반복 및 출력;\n" "new_key가 이제 맵의 키 중 하나입니다:\n"; for (const auto& n : u) print_key_value(n.first, n.second); } 가능한 출력: Iterate and print key-value pairs of unordered_map, being explicit with their types: Key:[BLUE] Value:[#0000FF] Key:[GREEN] Value:[#00FF00] Key:[RED] Value:[#FF0000] Iterate and print key-value pairs using C++17 structured binding: Key:[BLUE] Value:[#0000FF] Key:[GREEN] Value:[#00FF00] Key:[RED] Value:[#FF0000] Output values by key: The HEX of color RED is:[#FF0000] The HEX of color BLACK is:[#000000] Use operator[] with non-existent key to insert a new key-value pair: Key:[new_key] Value:[] Iterate and print key-value pairs, using `auto`; new_key is now one of the keys in the map: Key:[new_key] Value:[] Key:[WHITE] Value:[#FFFFFF] Key:[BLACK] Value:[#000000] Key:[BLUE] Value:[#0000FF] Key:[GREEN] Value:[#00FF00] Key:[RED] Value:[#FF0000] 결함 보고서다음 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
참고 항목
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||