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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::set	- std::set

Synopsis
	  Defined in header <set>
	  template<

	      class Key,
	      class	       Compare		  =	       std::less<Key>,
       (1)
	      class Allocator =	std::allocator<Key>

	  > class set;
	  namespace pmr	{

	      template<
		  class	Key,
		  class		  Compare	    =		std::less<Key>
       (2) (since C++17)
	      >	using set = std::set<Key, Compare,
	  std::pmr::polymorphic_allocator<Key>>;

	  }

	  std::set  is	an associative container that contains a sorted	set of
       unique objects of
	  type Key. Sorting is done using the key comparison function Compare.
       Search,
	  removal, and insertion operations have logarithmic complexity.  Sets
       are usually
	  implemented as Redblack trees.

	  Everywhere  the  standard  library  uses  the	 Compare requirements,
       uniqueness is
	  determined by	using the equivalence relation.	 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::set  meets  the	requirements  of Container, AllocatorAwareCon-
       tainer,
	  AssociativeContainer and ReversibleContainer.

Template parameters
	   This	section	is incomplete
	   Reason: Add descriptions of the template parameters.

Member types
	  Member type		    Definition
	  key_type		    Key
	  value_type		    Key
	  size_type		       Unsigned	   integer    type    (usually
       std::size_t)
	  difference_type		Signed	   integer    type    (usually
       std::ptrdiff_t)
	  key_compare		    Compare
	  value_compare		    Compare
	  allocator_type	    Allocator
	  reference		    value_type&
	  const_reference	    const value_type&
				    Allocator::pointer
       (until C++11)
	  pointer		     std::allocator_traits<Allocator>::pointer
       (since C++11)

				    Allocator::const_pointer
       (until
										    C++11)
	  const_pointer				 std::allocator_traits<Alloca-
       tor>::const_pointer (since
										    C++11)

	  iterator		     Constant  LegacyBidirectionalIterator  to
       value_type
	  const_iterator	      LegacyBidirectionalIterator   to	 const
       value_type
	  reverse_iterator	    std::reverse_iterator<iterator>
	  const_reverse_iterator    std::reverse_iterator<const_iterator>
	  node_type (since C++17)   a specialization of	node handle represent-
       ing a container
				    node
				    type describing the	result of inserting  a
       node_type, a
				    specialization of

				    template<class Iter, class NodeType>
				    struct /*unspecified*/
	  insert_return_type (since {
	  C++17)			Iter	 position;
					bool	 inserted;
					NodeType node;
				    };
				    instantiated with template arguments iter-
       ator and
				    node_type.

Member functions
	  constructor	constructs the set
			(public	member function)
	  destructor	destructs the set
			(public	member function)
	  operator=	assigns	values to the container
			(public	member function)
	  get_allocator	returns	the associated allocator
			(public	member function)

Iterators
	  begin		returns	an iterator to the beginning
	  cbegin	(public	member function)
	  (C++11)
	  end		returns	an iterator to the end
	  cend		(public	member function)
	  (C++11)
	  rbegin	returns	a reverse iterator to the beginning
	  crbegin	(public	member function)
	  (C++11)
	  rend		returns	a reverse iterator to the end
	  crend		(public	member function)
	  (C++11)

Capacity
	  empty		checks whether the container is	empty
			(public	member function)
	  size		returns	the number of elements
			(public	member function)
	  max_size	returns	the maximum possible number of elements
			(public	member function)

Modifiers
	  clear		clears the contents
			(public	member function)
			inserts	elements
	  insert	or nodes
			(since C++17)
			(public	member function)
	  insert_range	inserts	a range	of elements
	  (C++23)	(public	member function)
	  emplace	constructs element in-place
	  (C++11)	(public	member function)
	  emplace_hint	constructs elements in-place using a hint
	  (C++11)	(public	member function)
	  erase		erases elements
			(public	member function)
	  swap		swaps the contents
			(public	member function)
	  extract	extracts nodes from the	container
	  (C++17)	(public	member function)
	  merge		splices	nodes from another container
	  (C++17)	(public	member function)

Lookup
	  count		returns	the number of elements matching	specific key
			(public	member function)
	  find		finds element with specific key
			(public	member function)
	  contains	checks if the container	contains element with specific
       key
	  (C++20)	(public	member function)
	  equal_range	returns	range of elements matching a specific key
			(public	member function)
	  lower_bound	returns	an iterator to the first element not less than
       the given key
			(public	member function)
	  upper_bound	 returns an iterator to	the first element greater than
       the given key
			(public	member function)

Observers
	  key_comp	returns	the function that compares keys
			(public	member function)
	  value_comp	returns	the function that compares keys	in objects  of
       type value_type
			(public	member function)

Non-member functions
	  operator==
	  operator!=
	  operator<
	  operator<=
	  operator>
	  operator>=	       lexicographically  compares  the	 values	of two
       sets
	  operator<=>	      (function	template)
	  (removed in C++20)
	  (removed in C++20)
	  (removed in C++20)
	  (removed in C++20)
	  (removed in C++20)
	  (C++20)
	  std::swap(std::set) specializes the std::swap	algorithm
			      (function	template)
	  erase_if(std::set)  erases all elements satisfying specific criteria
	  (C++20)	      (function	template)

	    Deduction guides (since C++17)

Notes
	  The member types iterator and	const_iterator may be aliases  to  the
       same type. This
	  means	 defining  a pair of function overloads	using the two types as
       parameter types
	  may violate the One Definition Rule. Since iterator  is  convertible
       to
	  const_iterator, a single function with a const_iterator as parameter
       type will work
	  instead.

	      Feature-test macro       Value	Std		      Feature
	  __cpp_lib_containers_ranges  202202L (C++23) Ranges construction and
       insertion for
						      containers

Example
	   This	section	is incomplete
	   Reason: no example

	  Defect reports

	  The following	behavior-changing defect reports were applied retroac-
       tively to
	  previously published C++ standards.

	    DR	  Applied to	       Behavior	as published		  Cor-
       rect behavior
	  LWG 103 C++98	     iterator allows modification of keys	itera-
       tor made	constant
			     Key was not required to be
	  LWG  230 C++98      CopyConstructible				Key is
       also required to
			     (a	key of type Key	might  not  be	able  to    be
       CopyConstructible
			     be	constructed)

Categories:
	    * Todo with	reason
	    * Todo no example

http://cppreference.com		  2024.06.10			   std::set(3)

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

home | help