(1)
(C++11부터)
(2)
(C++17부터)
std::unordered_multimap
는 동등한 키를 지원하는(하나의 unordered_multimap이 각 키 값을 여러 개 포함할 수 있음) 비정렬 연관 컨테이너이며, 키와 다른 타입의 값을 연관시킵니다. unordered_multimap 클래스는 전방 반복자를 지원합니다. 검색, 삽입 및 제거 작업은 평균 상수 시간 복잡도를 가집니다.
내부적으로 요소들은 특정 순서로 정렬되지 않지만 버킷으로 구성됩니다. 요소가 어떤 버킷에 배치되는지는 전적으로 해당 키의 해시에 따라 결정됩니다. 이는 해시가 계산되면 요소가 배치된 정확한 버킷을 참조하므로 개별 요소에 대한 빠른 접근을 가능하게 합니다.
이 컨테이너의 순회 순서는 안정적일 필요가 없습니다(따라서 예를 들어
std::equal
을 사용하여 두
std::unordered_multimap
을 비교할 수 없습니다). 단, 키가
동등한
(
key_eq()
를 비교자로 사용하여 동일하게 비교되는) 요소들의 각 그룹은 순회 순서에서 연속적인 하위 범위를 형성하며,
equal_range()
를 통해서도 접근할 수 있습니다.
std::unordered_multimap
는
Container
,
AllocatorAwareContainer
,
UnorderedAssociativeContainer
요구 사항을 충족합니다.
std::unordered_multimap
의 모든 멤버 함수는
constexpr
입니다: 상수 표현식 평가에서
std::unordered_multimap
객체를 생성하고 사용하는 것이 가능합니다.
그러나
std::unordered_multimap
객체는 일반적으로
constexpr
일 수 없습니다. 동적으로 할당된 저장 공간은 동일한 상수 표현식 평가에서 해제되어야 하기 때문입니다.
(C++26부터)
목차
템플릿 매개변수
멤버 타입
타입
정의
key_type
Key
mapped_type
T
value_type
std :: pair < const Key , T >
size_type
부호 없는 정수 타입 (일반적으로 std::size_t )
difference_type
부호 있는 정수 타입 (일반적으로 std::ptrdiff_t )
hasher
Hash
key_equal
KeyEqual
allocator_type
Allocator
reference
value_type &
const_reference
const value_type &
pointer
std :: allocator_traits < Allocator >:: pointer
const_pointer
std :: allocator_traits < Allocator >:: const_pointer
iterator
LegacyForwardIterator 및 ConstexprIterator (C++26부터) 에 대한 value_type
const_iterator
LegacyForwardIterator 및 ConstexprIterator (C++26부터) 에 대한 const value_type
local_iterator
다음 조건을 만족하는 반복자 타입: category, value, difference, pointer 및 reference 타입이 iterator와 동일합니다. 이 반복자는 단일 버킷을 순회하는 데 사용할 수 있지만 버킷 간 순회는 불가능합니다.
const_local_iterator
다음 조건을 만족하는 반복자 타입: category, value, difference, pointer 및 reference 타입이 const_iterator와 동일합니다. 이 반복자는 단일 버킷을 순회하는 데 사용할 수 있지만 버킷 간 순회는 불가능합니다.
node_type (C++17부터)
의 특수화인 node handle 컨테이너 노드를 나타내는
멤버 함수
unordered_multimap
을 생성합니다
(public member function)
unordered_multimap
을 소멸시킵니다
(public member function)
컨테이너에 값을 할당합니다
(public member function)
관련 할당자 반환
(public member function)
반복자
시작 부분에 대한 반복자를 반환합니다
(public member function)
끝을 가리키는 반복자를 반환합니다
(public member function)
용량
컨테이너가 비어 있는지 확인합니다
(public member function)
요소의 수를 반환합니다
(public member function)
가능한 최대 요소 수를 반환합니다
(public member function)
수정자
내용을 지움
(public member function)
요소를 삽입합니다
또는 노드
(C++17부터)
(public member function)
요소 범위를 삽입합니다
(public member function)
요소를 제자리에 생성
(public member function)
힌트를 사용하여 제자리에서 요소를 생성합니다
(public member function)
요소를 삭제합니다
(public member function)
내용을 교환합니다
(public member function)
컨테이너로부터 노드를 추출합니다
(public member function)
다른 컨테이너로부터 노드를 연결합니다
(public member function)
조회
특정 키와 일치하는 요소의 수를 반환합니다
(public member function)
특정 키를 가진 요소를 찾습니다
(public member function)
특정 키를 가진 요소가 컨테이너에 포함되어 있는지 확인합니다
(public member function)
특정 키와 일치하는 요소들의 범위를 반환합니다
(public member function)
버킷 인터페이스
지정된 버킷의 시작 부분에 대한 반복자를 반환합니다
(public member function)
지정된 버킷의 끝을 가리키는 반복자를 반환합니다
(public member function)
버킷 수를 반환합니다
(public member function)
최대 버킷 수를 반환합니다
(public member function)
특정 버킷의 요소 수를 반환합니다
(public member function)
특정 키에 대한 버킷을 반환합니다
(public member function)
해시 정책
버킷당 평균 요소 수를 반환합니다
(public member function)
버킷당 최대 평균 요소 수를 관리합니다
(public member function)
지정된 버킷 수 이상을 예약하고 해시 테이블을 재생성합니다
(public member function)
지정된 수의 요소에 대한 공간을 예약하고 해시 테이블을 재생성합니다
(public member function)
옵저버
키를 해시하는 데 사용되는 함수를 반환합니다
(public member function)
키 동등 비교에 사용되는 함수를 반환합니다
(public member function)
비멤버 함수
(C++11)
(C++11)
(removed in C++20)
unordered_multimap의 값을 비교함
(함수 템플릿)
std::swap
알고리즘을 특수화함
(함수 템플릿)
특정 조건을 만족하는 모든 요소를 삭제함
(함수 템플릿)
참고 사항
예제
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
DR
적용 대상
게시된 동작
올바른 동작
LWG 2050
C++11
reference
,
const_reference
,
pointer
및
const_pointer
의 정의가
allocator_type
을 기반으로 함
value_type
및
std::allocator_traits
를 기반으로 함
참고 항목
키-값 쌍의 컬렉션, 키로 해시되며 키는 고유함
(클래스 템플릿)
키-값 쌍의 컬렉션, 키로 정렬됨
(클래스 템플릿)
두 개의 컨테이너를 적응시켜 키-값 쌍의 컬렉션을 제공하며, 키로 정렬됨
(클래스 템플릿)