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 Redablack trees.

	Everywhere  the  standard library uses the Compare requirements, unique-
     ness 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, AllocatorAwareContainer,
	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			    (un-
     til 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 representing 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 iterator
     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 para-
     meter 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 in-
     sertion 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		 Correct
     behavior
	LWG 103 C++98	   iterator allows modification  of  keys	iterator
     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 CopyCon-
     structible
			   be constructed)

Categories:
	  * Todo with reason
	  * Todo no example

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

home | help