std::multimap
<map>
class Key,
class T,
class Compare = std::less <Key>,
class Allocator = std::allocator <std::pair <const Key, T>>
template<
class Key,
class T,
class Compare = std::less <Key>
> using multimap = std::multimap<Key, T, Compare,
std::pmr::polymorphic_allocator <std::pair <const Key, T>>>;
std::multimap is an associative container that contains a sorted list of key-value pairs, while permitting multiple entries with the same key. Sorting is done according to the comparison function Compare, applied to the keys. Search, insertion, and removal operations have logarithmic complexity.
Iterators of std::multimap iterate in non-descending order of keys, where non-descending is defined by the comparison that was used for construction. That is, given
- m, a
std::multimap - it_l and it_r, dereferenceable iterators to m, with it_l < it_r.
m.value_comp()(*it_r, *it_l) == false (least to greatest if using the default comparison).
The order of the key-value pairs whose keys compare equivalent is the order of insertion and does not change.
(since C++11)Everywhere the standard library uses the Compare requirements, equivalence is determined by using the equivalence relation as described on Compare. In imprecise terms, two objects a and b are considered equivalent if neither compares less than the other: !comp(a, b) && !comp(b, a).
std::multimap meets the requirements of Container, AllocatorAwareContainer, AssociativeContainer and ReversibleContainer.
std::multimap are constexpr: it is possible to create and use std::multimap objects in the evaluation of a constant expression.However, std::multimap objects generally cannot be constexpr, because any dynamically allocated storage must be released in the same evaluation of constant expression.
Contents
[edit] Template parameters
Reason: Add descriptions of the template parameters.
[edit] Member types
pointer
Allocator::pointer
std::allocator_traits <Allocator>::pointer
(since C++11)const_pointer
Allocator::const_pointer
std::allocator_traits <Allocator>::const_pointer
(since C++11)iterator
value_type[edit]
const_iterator
reverse_iterator
const_reverse_iterator
node_type (since C++17)
[edit] Member classes
[edit] Member functions
Iterators
Capacity
Modifiers
Lookup
(public member function) [edit]
Observers
value_type (public member function) [edit]
[edit] Non-member functions
multimaps (function template) [edit]
Deduction guides
(since C++17)[edit] Notes
| Feature-test macro | Value | Std | Feature |
|---|---|---|---|
__cpp_lib_containers_ranges |
202202L |
(C++23) | Ranges construction and insertion for containers |
__cpp_lib_constexpr_map |
202502L |
(C++26) | constexpr std::multimap
|
[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 230 | C++98 | Key was not required to be CopyConstructible (a key of type Key might not be able to be constructed)
|
Key is also required tobe CopyConstructible |
[edit] See also
(class template) [edit]