|
constexpr | IntrusiveSet () |
| Constructs an empty set of items.
|
|
template<typename Comparator > |
constexpr | IntrusiveSet (Comparator &&compare) |
|
template<typename Iterator , typename... Functors> |
| IntrusiveSet (Iterator first, Iterator last, Functors &&... functors) |
|
template<typename... Functors> |
| IntrusiveSet (std::initializer_list< T * > items, Functors &&... functors) |
|
iterator | begin () noexcept |
|
const_iterator | begin () const noexcept |
|
const_iterator | cbegin () const noexcept |
|
iterator | end () noexcept |
|
const_iterator | end () const noexcept |
|
const_iterator | cend () const noexcept |
|
reverse_iterator | rbegin () noexcept |
|
const_reverse_iterator | rbegin () const noexcept |
|
const_reverse_iterator | crbegin () const noexcept |
|
reverse_iterator | rend () noexcept |
|
const_reverse_iterator | rend () const noexcept |
|
const_reverse_iterator | crend () const noexcept |
|
bool | empty () const noexcept |
| Returns whether the set has zero items or not.
|
|
size_t | size () const |
| Returns the number of items in the set.
|
|
constexpr size_t | max_size () const noexcept |
|
void | clear () |
|
std::pair< iterator, bool > | insert (T &item) |
|
iterator | insert (iterator, T &item) |
|
template<class Iterator > |
void | insert (Iterator first, Iterator last) |
|
void | insert (std::initializer_list< T * > ilist) |
|
iterator | erase (iterator pos) |
|
iterator | erase (iterator first, iterator last) |
|
size_t | erase (const T &item) |
|
void | swap (IntrusiveSet< T > &other) |
| Exchanges this set's items with the other set's items.
|
|
template<typename MapType > |
void | merge (MapType &other) |
|
size_t | count (const T &item) const |
|
iterator | find (const T &item) |
|
const_iterator | find (const T &item) const |
|
std::pair< iterator, iterator > | equal_range (const T &item) |
|
std::pair< const_iterator, const_iterator > | equal_range (const T &item) const |
|
iterator | lower_bound (const T &item) |
|
const_iterator | lower_bound (const T &item) const |
|
iterator | upper_bound (const T &item) |
|
const_iterator | upper_bound (const T &item) const |
|
template<typename T>
class pw::IntrusiveSet< T >
A std::set<Key, Compare>
-like class that uses intrusive items as keys.
Since the set structure is stored in the items themselves, each item must outlive any set it is a part of and must be part of at most one set.
This set requires unique keys. Attempting to add an item with same key as an item already in the set will fail.
- Since items are not allocated by this class, the following methods have no analogue:
- std::set<T>::operator=
- std::set<T>::operator[]
- std::set<T>::get_allocator
- std::set<T>::insert_or_assign
- std::set<T>::emplace
- std::set<T>::emplace_hint
- std::set<T>::try_emplace
- Methods corresponding to the following take initializer lists of pointer to items rather than the items themselves:
- std::set<T>::(constructor)
- std::set<T>::insert
- There are no overloads corresponding to the following methods that take r-value references.:
- std::set<T>::insert
- std::set<T>::merge
- Since modifying the set modifies the items themselves, methods corresponding to those below only take
iterator
s and not const_iterator
s:
- std::set<T>::insert
- std::set<T>::erase
- C++23 methods are not (yet) supported.
- Template Parameters
-
T | Type of data stored in the set. |