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

NAME
     std::multiset - std::multiset

Synopsis
	Defined in header <set>
	template<

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

	> class multiset;
	namespace pmr {

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

	}

	std::multiset is an associative container that contains a sorted set  of
     objects of
	type  Key. Unlike set, multiple keys with equivalent values are allowed.
     Sorting is
	done using the key comparison function Compare. Search,  insertion,  and
     removal
	operations have logarithmic complexity.

	Everywhere  the  standard library uses the Compare requirements, equiva-
     lence is
	determined by using the equivalence relation as described on Compare. In
     imprecise
	terms, two objects a and b are considered equivalent if neither compares
     less than
	the other: !comp(a, b) && !comp(b, a).

	The order of the elements  that  compare  equivalent  is  the  order  of
     (since C++11)
	insertion and does not change.

	std::multiset  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<Allocator>::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

Member functions
	constructor   constructs the multiset
		      (public member function)
	destructor    destructs the multiset
		      (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
     multisets
	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::multiset) specializes the std::swap algorithm
				 (function template)
	erase_if(std::multiset)   erases all elements satisfying specific crite-
     ria
	(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::multiset(3)

home | help