(C++17) | ||||
Sequence | ||||
(C++11) | ||||
(C++26) | ||||
(C++26) | ||||
(C++11) | ||||
Associative | ||||
Unordered associative | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
Adaptors | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
Views | ||||
(C++20) | ||||
(C++23) | ||||
Tables | ||||
Iterator invalidation | ||||
Member function table | ||||
Non-member function table |
std::unordered_multimap
Member types | ||||||
Member functions | ||||||
Non-member functions | ||||||
| ||||||
Deduction guides(C++17) |
unordered_multimap& operator=(const unordered_multimap& other); | (1) | (since C++11) (constexpr since C++26) |
(2) | ||
unordered_multimap& operator=( unordered_multimap&& other); | (since C++11) (until C++17) | |
unordered_multimap& operator=( unordered_multimap&& other) noexcept(/* see below */); | (since C++17) (constexpr since C++26) | |
unordered_multimap& operator=(std::initializer_list<value_type> ilist); | (3) | (since C++11) (constexpr since C++26) |
Replaces the contents of the container.
Lettraits
bestd::allocator_traits<allocator_type>:
Contents |
other | - | another container to use as data source |
ilist | - | initializer list to use as data source |
*this
2) noexcept specification: noexcept(std::allocator_traits<Allocator>::is_always_equal::value &&std::is_nothrow_move_assignable<Hash>::value | (since C++17) |
After container move assignment (overload(2)), unless element-wise move assignment is forced by incompatible allocators, references, pointers, and iterators (other than the end iterator) toother 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 viaLWG issue 2321.
The following code usesoperator= to assign onestd::unordered_multimap to another:
#include <initializer_list>#include <iostream>#include <iterator>#include <unordered_map>#include <utility> void print(constauto comment,constauto& container){auto size=std::size(container);std::cout<< comment<<"{ ";for(constauto&[key, value]: container)std::cout<<'{'<< key<<','<< value<<(--size?"}, ":"} ");std::cout<<"}\n";} int main(){std::unordered_multimap<int,int> x{{1,1},{2,2},{3,3}}, y, z;constauto w={std::pair<constint,int>{4,4},{5,5},{6,6},{7,7}}; std::cout<<"Initially:\n"; print("x = ", x); print("y = ", y); print("z = ", z); std::cout<<"Copy assignment copies data from x to y:\n"; y= x; print("x = ", x); print("y = ", y); std::cout<<"Move assignment moves data from x to z, modifying both x and z:\n"; z= std::move(x); print("x = ", x); print("z = ", z); std::cout<<"Assignment of initializer_list w to z:\n"; z= w; print("w = ", w); print("z = ", z);}
Possible output:
Initially:x = { {3,3}, {2,2}, {1,1} }y = { }z = { }Copy assignment copies data from x to y:x = { {3,3}, {2,2}, {1,1} }y = { {3,3}, {2,2}, {1,1} }Move assignment moves data from x to z, modifying both x and z:x = { }z = { {3,3}, {2,2}, {1,1} }Assignment of initializer_list w to z:w = { {4,4}, {5,5}, {6,6}, {7,7} }z = { {7,7}, {6,6}, {5,5}, {4,4} }
constructs theunordered_multimap (public member function)[edit] |