0% found this document useful (0 votes)
37 views

STD Set

Uploaded by

jordan1412
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
37 views

STD Set

Uploaded by

jordan1412
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

std::set

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, (2) (since C++17)
class Compare = std::less<Key>
> 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 red-black 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, 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 (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
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

constructs the set


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

Iterators

begin returns an iterator to the beginning


cbegin (C++11) (public member function)

end returns an iterator to the end


cend (C++11) (public member function)

rbegin returns a reverse iterator to the beginning


crbegin (C++11) (public member function)

rend returns a reverse iterator to the end


crend (C++11) (public member function)

Capacity

checks whether the container is empty


empty
(public member function)
returns the number of elements
size
(public member function)
returns the maximum possible number of elements
max_size
(public member function)

Modifiers

clears the contents


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

Lookup

returns the number of elements matching specific key


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

Observers

returns the function that compares keys


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

operator==
operator!= (removed in C++20)
operator< (removed in C++20)
lexicographically compares the values in the set
operator<= (removed in C++20)
(function template)
operator> (removed in C++20)
operator>= (removed in C++20)
operator<=> (C++20)
specializes the std::swap algorithm
std::swap(std::set)
(function template)
Erases all elements satisfying specific criteria
erase_if(std::set) (C++20)
(function template)

(since C++17)
Deduction guides

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.

Example

This section is incomplete


Reason: no example

Defect Reports

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

DR Applied to Behavior as published Correct behavior


LWG 103 (https://cplusplus.github.io/LWG/issue103) C++98 iterator allows modification of keys iterator made constant
Key was not required to be CopyConstructible Key is also required to
LWG 230 (https://cplusplus.github.io/LWG/issue230) C++98
(a key of type Key might not be able to be constructed) be CopyConstructible

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/container/set&oldid=149235"

You might also like