home | help
std::unorde...:equal_range(3)  C++ Standard Libary std::unorde...:equal_range(3)

NAME
     std::unordered_map::equal_range - std::unordered_map::equal_range

Synopsis
	std::pair<iterator,  iterator>	equal_range( const Key& key );	     (1)
     (since C++11)
	std::pair<const_iterator, const_iterator> equal_range( const  Key&   (2)
     (since C++11)
	key ) const;
	template<  class  K >						     (3)
     (since C++20)
	std::pair<iterator, iterator> equal_range( const K& x );
	template< class K >
	std::pair<const_iterator, const_iterator> equal_range( const K&  x   (4)
     (since C++20)
	) const;

	1,2)  Returns  a  range containing all elements with key key in the con-
     tainer. The
	range is defined by two iterators, the first pointing to the first  ele-
     ment of the
	wanted range and the second pointing past the last element of the range.
	3,4)  Returns  a range containing all elements in the container with key
     equivalent to
	x.  This  overload  participates  in   overload   resolution   only   if
     Hash::is_transparent
	and KeyEqual::is_transparent are valid and each denotes a type. This as-
     sumes that
	such Hash is callable with both K and Key type, and that the KeyEqual is
	transparent,  which, together, allows calling this function without con-
     structing an
	instance of Key.

Parameters
	key - key value to compare the elements to
	x   - 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.

Complexity
	Average case linear in the number of elements with the	key  key,  worst
     case linear in
	the size of the container.

Notes
		Feature-test macro	    Value    Std		Feature
							   Heterogeneous compar-
     ison lookup
	__cpp_lib_generic_unordered_lookup 201811L (C++20) in unordered associa-
     tive
							   containers, overloads
     (3,4)

Example
     // Run this code

      #include <iostream>
      #include <unordered_map>

      int main()
      {
	  std::unordered_map<int,char> map = {{1, 'a'},{2, 'b'}};
	  auto range = map.equal_range(1);
	  for (auto it = range.first; it != range.second; ++it)
	      std::cout << it->first << ' ' << it->second << '\n';
      }

Output:
      1 a

See also
	find	    finds element with specific key
		    (public member function)
	contains    checks if the container contains element with specific key
	(C++20)     (public member function)
	count	    returns the number of elements matching specific key
		    (public member function)
	equal_range returns range of elements matching a specific key
		    (function template)

http://cppreference.com 	   2024.06.10	   std::unorde...:equal_range(3)

home | help