std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>::unordered_multimap
std::unordered_multimap
: unordered_multimap(size_type(/* unspecified */)) {}
(until C++20)
const Hash& hash = Hash(),
const key_equal& equal = key_equal(),
const Allocator& alloc )
const Hash& hash,
const Allocator& alloc )
unordered_multimap( InputIt first, InputIt last,
size_type bucket_count = /* unspecified */,
const Hash& hash = Hash(),
const key_equal& equal = key_equal(),
unordered_multimap( InputIt first, InputIt last,
size_type bucket_count,
const Allocator& alloc )
: unordered_multimap(first, last,
unordered_multimap( InputIt first, InputIt last,
size_type bucket_count,
const Hash& hash,
const Allocator& alloc )
: unordered_multimap(first, last,
size_type bucket_count = /* unspecified */,
const Hash& hash = Hash(),
const key_equal& equal = key_equal(),
size_type bucket_count,
const Allocator& alloc )
: unordered_multimap(init, bucket_count,
size_type bucket_count,
const Hash& hash,
const Allocator& alloc )
: unordered_multimap(init, bucket_count,
unordered_multimap( std::from_range_t, R&& rg,
size_type bucket_count = /* see description */,
const Hash& hash = Hash(),
const key_equal& equal = key_equal(),
unordered_multimap( std::from_range_t, R&& rg,
size_type bucket_count,
const Allocator& alloc )
: unordered_multimap(std::from_range, std::forward <R>(rg),
unordered_multimap( std::from_range_t, R&& rg,
size_type bucket_count,
const Hash& hash,
const Alloc& alloc )
: unordered_multimap(std::from_range, std::forward <R>(rg),
Constructs new container from a variety of data sources. Optionally uses user supplied bucket_count as a minimal number of buckets to create, hash as the hash function, equal as the function to compare keys and alloc as the allocator.
[
first,
last)
. Sets max_load_factor() to 1.0. The template parameter Allocator
is only deduced from the first argument while used in class template argument deduction.
The template parameter Allocator
is only deduced from the first argument while used in class template argument deduction.
[edit] Parameters
input_range
whose elements are convertible to value_type
InputIt
must meet the requirements of LegacyInputIterator.
[edit] Complexity
[edit] Exceptions
Calls to Allocator::allocate
may throw.
[edit] Notes
After container move construction (overload (11,12)), references, pointers, and iterators (other than the end iterator) to other remain valid, but refer to elements that are now in *this. The current standard makes this guarantee via the blanket statement in [container.reqmts]/67, and a more direct guarantee is under consideration via LWG issue 2321.Although not formally required until C++23, some implementations have already put the template parameter Allocator
into non-deduced contexts in earlier modes.
Feature-test macro | Value | Std | Feature |
---|---|---|---|
__cpp_lib_containers_ranges |
202202L |
(C++23) | Ranges-aware construction and insertion; overloads (16-18) |
[edit] Example
Reason: no example
[edit] Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 2193 | C++11 | the default constructor (1) was explicit | made non-explicit |
LWG 2230 | C++11 | the semantics of overload (13) was not specified | specified |