std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>::equal_range
Min standard notice:
1,2) Returns a range containing all elements with key key in the container. The range is defined by two iterators, the first pointing to the first element of the wanted range and the second pointing past the last element of the range.
# Declarations
std::pair<iterator, iterator> equal_range( const Key& key );
(since C++11)
std::pair<const_iterator, const_iterator> equal_range( const Key& key ) const;
(since C++11)
template< class K >
std::pair<iterator, iterator> equal_range( const K& x );
(since C++20)
template< class K >
std::pair<const_iterator, const_iterator> equal_range( const K& x ) const;
(since C++20)
# Parameters
key: key value to compare the elements tox: a value of any type that can be transparently compared with a key
# Return value
std::pair containing a pair of iterators defining the wanted range. If there are no such elements, past-the-end (see end()) iterators are returned as both elements of the pair.
# Notes
Feature-test macro Value Std Feature __cpp_lib_generic_unordered_lookup 201811L (C++20) Heterogeneous comparison lookup in unordered associative containers, overloads (3,4)
# Example
#include <iostream>
#include <unordered_map>
int main()
{
std::unordered_multimap<int,char> map = {{1, 'a'},{1, 'b'},{1, 'd'},{2, 'b'}};
auto range = map.equal_range(1);
for (auto it = range.first; it != range.second; ++it)
std::cout << it->first << ' ' << it->second << '\n';
}