Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

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

NAME
       std::set::equal_range - std::set::equal_range

Synopsis
	  std::pair<iterator,iterator>	 equal_range(	const	Key&   key  );
       (1)
	  std::pair<const_iterator,const_iterator>  equal_range(  const	  Key&
       (2)
	  key )	const;
	  template<		     class		   K		     >
       (3) (since C++14)
	  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++14)
	  const;

	  Returns  a  range  containing	all elements with the given key	in the
       container. The
	  range	is defined by two iterators, one pointing to the first element
       that is not
	  less than key	and another pointing to	the first element greater than
       key.
	  Alternatively,   the	 first	 iterator   may	  be   obtained	  with
       lower_bound(), and the second
	  with upper_bound().

	  1,2) Compares	the keys to key.
	  3,4) Compares	the keys to the	value x. This overload participates in
       overload
	  resolution only if the qualified-id Compare::is_transparent is valid
       and denotes a
	  type.	 It  allows  calling this function without constructing	an in-
       stance of Key.

	   This	section	is incomplete
	   Reason: explain better

Parameters
	  key -	key value to compare the elements to
	  x   -	alternative value that can be compared to Key

Return value
	  std::pair containing a pair of iterators defining the	wanted	range:
       the first
	  pointing to the first	element	that is	not less than key and the sec-
       ond pointing to
	  the first element greater than key.

	  If there are no elements not less than key, past-the-end (see	end())
       iterator	is
	  returned  as	the  first element. Similarly if there are no elements
       greater than key,
	  past-the-end iterator	is returned as the second element.

Complexity
	  Logarithmic in the size of the container.

Notes
	  Feature-test macro: __cpp_lib_generic_associative_lookup (for	 over-
       loads (3,4))

Example
       // Run this code

	#include <set>
	#include <iostream>

	template <typename I>
	void print_equal_range(I first,	I lb, I	ub, I last) {
	    for	(I i{first}; i != lb; ++i)
		std::cout << *i	<< " ";
	    std::cout << "[ ";
	    for	(I i{lb}; i != ub; ++i)
		std::cout << *i	<< " ";
	    std::cout << ") ";
	    for	(I i{ub}; i != last; ++i)
		std::cout << *i	<< " ";
	    std::cout << '\n';
	}

	int main()
	{
	    std::set<int> c{4, 3, 2, 1,	3, 3};
	    std::cout << "c = ";
	    print_equal_range(begin(c),	begin(c), end(c), end(c));
	    for	(int key{}; key	!= 6; ++key) {
		std::cout << "key = " << key <<	"; equal range = ";
		const auto [lb,	ub] = c.equal_range(key);
		print_equal_range(begin(c), lb,	ub, end(c));
	    }
	}

Output:
	c = [ 1	2 3 4 )
	key = 0; equal range = [ ) 1 2 3 4
	key = 1; equal range = [ 1 ) 2 3 4
	key = 2; equal range = 1 [ 2 ) 3 4
	key = 3; equal range = 1 2 [ 3 ) 4
	key = 4; equal range = 1 2 3 [ 4 )
	key = 5; equal range = 1 2 3 4 [ )

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)
	  upper_bound returns an iterator to the first	element	 greater  than
       the given key
		      (public member function)
	  lower_bound  returns	an iterator to the first element not less than
       the given key
		      (public member function)
	  equal_range returns range of elements	matching a specific key
		      (function	template)

http://cppreference.com		  2022.07.31	      std::set::equal_range(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::set::equal_range&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help