Note, this article is not finished! You can help by editing this doc page.
Overview
- Simplified (since C++98)
- Detailed
template< class Key, class Value, /* ... */ >
class multimap;
- Regular (since C++98)
- Polymorphic (since C++17)
template<
class Key,
class Value,
class Compare = std::less<Key>,
class Allocator = std::allocator<std::pair<const Key, Value>>
>
class multimap;
namespace pmr {
template< class Key, class Value, class Compare = std::less<Key> >
using multimap = std::multimap<Key, Value, Compare,
std::pmr::polymorphic_allocator<std::pair<const Key, Value>>>;
}
The std::multimap
is a container that stores key-value pairs in a specified order. It works almost as
std::map
, the only difference is that the keys can repeat themselves. If the keys of both elements are the
same, they are ordered by their values.
Technical details
Technical definition of a multimap
std::multimap
Defined in | map |
Template parameters
pub | Key | The type of the stored keys. |
pub | Value | The type of the stored values. |
pub | Compare | A comparator type satisfying Compare. |
pub | Allocator | An allocator type responsible for allocating and deallocating memory. Must satisfy Allocator. |
Type names
pub | key_type | Key |
pub | mapped_type | Value |
pub | value_type | std::pair<const Key, Value> |
pub | size_type | Unsigned integer type (usually ). |
pub | difference_type | Signed integer type (usually ). |
pub | key_compare | Compare |
pub | allocator_type | Allocator |
pub | reference | value_type& |
pub | const_reference | const value_type& |
pub | pointer | Allocator::pointer (until C++11)std::allocator_traits<Allocator>::pointer (since C++11) |
pub | const_pointer | Allocator::const_pointer (until C++11)std::allocator_traits<Allocator>::const_pointer (since C++11) |
pub | iterator | LegacyBidirectionalIterator to value_type |
pub | const_iterator | LegacyBidirectionalIterator to const value_type |
pub | reverse_iterator |
|
pub | const_reverse_iterator |
|
pub | node_type (since C++17) | A specialization of node handle representing a container node. |
Member classes
pub | value_compare | Function object that compares two objects of type |
Member functions
pub | (constructors) | Constructs a new multimap. |
pub | (destructor) | Destructs a multimap. |
pub | operator= | Assigns one multimap to another. |
pub | get_allocator | Returns an associated allocator. |
Iterators
pub | begin cbegin (since C++11) | Returns an iterator to the beginning. |
pub | end cend (since C++11) | Returns an iterator to the end. |
pub | rbegin crbegin (since C++11) | Returns a reverse iterator to the beginning. |
pub | rend crend (since C++11) | Returns a reverse iterator to the end. |
Capacity
pub | empty | Returns |
pub | size | Returns the number of elements in a multimap. |
pub | max_size | Returns the maximum possible number of elements. |
Modifiers
pub | clear | Clears the contents of a multimap. |
pub | insert | Inserts elements or nodes (extracted with |
pub | emplace (since C++11) | Constructs a new element in place. |
pub | emplace_hint (since C++11) | Constructs elements in-place using a hint (iterator). |
pub | erase | Erases elements. |
pub | swap | Swaps two multimaps. |
pub | extract (since C++17) | Extracts nodes from a multimap (can be later inserted somewhere else). |
pub | merge (since C++17) | Merges two multimaps together. |
Lookup
pub | count | Returns the number of elements matching a specific key. |
pub | find | Searches for an element and returns an iterator to it, or end iterator if not found. |
pub | contains (since C++20) | Returns |
pub | equal_range | Returns a range of elements matching a specific key. |
pub | lower_bound | Returns an iterator to the first element not less than the given key. |
pub | upper_bound | Returns an iterator to the first element greater than the given key. |
Observers
pub | key_comp | Returns an internal function object that compares keys. |
pub | value_comp | Returns an internal function object that compares keys in objects of type |
Non-member functions
pub | operator== operator!= (removed in C++20) operator< (removed in C++20) operator> (removed in C++20) operator<= (removed in C++20) operator>= (removed in C++20) operator<=> (since C++20) | Lexicographically compares the values in a multimap. |
pub | std::swap (std::multimap) | An overload for a std::swap algorithm. |
pub | std::erase_if (std::multimap) (since C++20) | Overload for a std::erase_if algorithm. |
Deduction guides (since C++17)
Click to expand
More examples
Basic manipulation
#include <iostream>
#include <utility>
#include <string>
#include <map>
int main(){
std::multimap<std::string, int> potions { {"health", 30}, {"mana", 25}, {"mana", 50} };
potions.emplace("health", 200);
potions.insert(std::make_pair("speed", 10));
for (const auto& [key, value] : potions)
std::cout << key << " " << value << std::endl;
return 0;
}
health 30
health 200
mana 25
mana 50
speed 10
Hover to see the original license.