Pigweed
C/C++ API Reference
|
Classes | |
class | const_iterator |
class | iterator |
Public Types | |
using | Item = typename Tree::Item |
IntrusiveSet items must derive from Item . | |
using | key_type = T |
using | value_type = T |
using | size_type = std::size_t |
using | difference_type = std::ptrdiff_t |
using | key_compare = Compare |
using | value_compare = Compare |
using | reference = value_type & |
using | const_reference = const value_type & |
using | pointer = value_type * |
using | const_pointer = const value_type * |
using | reverse_iterator = std::reverse_iterator< iterator > |
using | const_reverse_iterator = std::reverse_iterator< const_iterator > |
Public Member Functions | |
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 |
Friends | |
template<typename > | |
class | IntrusiveMultiSet |
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.
iterator
s and not const_iterator
s:T | Type of data stored in the set. |
|
inlineexplicitconstexpr |
Constructs an empty set of items.
SFINAE is used to disambiguate between this constructor and the one that takes an initializer list.
Compare | Function with the signature bool(T, T) that is used to order items. |
|
inline |
Constructs an IntrusiveSet from an iterator over Items.
The iterator may dereference as either Item& (e.g. from std::array<Item>) or Item* (e.g. from std::initializer_list<Item*>).
|
inline |
Constructs an IntrusiveSet from a std::initializer_list of pointers to items.
|
inline |
Removes all items from the set and leaves it empty.
The items themselves are not destructed.
|
inline |
Returns the number of equivalent items in the set.
Since the set requires unique keys, this is always 0 or 1.
|
inline |
Returns a pair of iterators where the first points to the smallest item that is not less than the given item, and the second points to the smallest item that is strictly greater than the given item.
|
inline |
Removes an item from the set and returns an iterator to the item after the removed item..
The items themselves are not destructed.
|
inline |
Returns a pointer to an item with the given key, or null if the set does not contain such an item.
|
inline |
Attempts to add the given item to the set.
The item will be added if the set does not already contain an equivalent item.
true
, or a pointer to the equivalent item and false
.
|
inline |
Returns an iterator to the smallest item in the set that is greater than or equal to the given item, or end()
if the set is empty.
|
inlineconstexprnoexcept |
Returns how many items can be added.
As an intrusive container, this is effectively unbounded.
|
inline |
Splices items from the other
set into this one.
The receiving set's Compare
function is used when inserting items.
|
inline |
Returns an iterator to the smallest item in the set that is strictly greater than the given item, or end()
if the set is empty.