C/C++ API Reference
Loading...
Searching...
No Matches
pw::IntrusiveMultiSet< T > Class Template Reference

Overview

template<typename T>
class pw::IntrusiveMultiSet< T >

A std::multiset<Key, Compare>-like class that uses intrusive items.

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 does not require unique keys. Multiple equivalent items may be added.

  • Since items are not allocated by this class, the following methods have no analogue:
    • std::multiset<T>::operator=
    • std::multiset<T>::get_allocator
    • std::multiset<T>::emplace
    • std::multiset<T>::emplace_hint
  • Methods corresponding to the following take initializer lists of pointer to items rather than the items themselves:
    • std::multiset<T>::(constructor)
    • std::multiset<T>::insert
  • There are no overloads corresponding to the following methods that take r-value references.:
    • std::multiset<T>::insert
    • std::multiset<T>::merge
  • Since modifying the set modifies the items themselves, methods corresponding to those below only take iterators and not const_iterators:
    • std::multiset<T>::insert
    • std::multiset<T>::erase
  • C++23 methods are not (yet) supported.
Template Parameters
TType of items stored in the set.

Classes

class  const_iterator
 
class  iterator
 

Public Types

using Item = typename Tree::Item
 IntrusiveMultiSet 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 IntrusiveMultiSet ()
 Constructs an empty set of items.
 
template<typename Comparator >
constexpr IntrusiveMultiSet (Comparator compare)
 
template<typename Iterator , typename... Functors>
 IntrusiveMultiSet (Iterator first, Iterator last, Functors &&... functors)
 
template<typename... Functors>
 IntrusiveMultiSet (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 multiset has zero items or not.
 
size_t size () const
 Returns the number of items in the multiset.
 
constexpr size_t max_size () const noexcept
 
void clear ()
 
iterator insert (T &item)
 Adds the given item to the multiset.
 
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 (IntrusiveMultiSet< T > &other)
 Exchanges this multiset's items with the other multiset's items.
 
template<typename MapType >
void merge (MapType &other)
 
size_t count (const T &item) const
 Returns the number of items in the multimap with the given key.
 
iterator find (const T &item)
 
const_iterator find (const T &item) const
 
std::pair< iterator, iteratorequal_range (const T &item)
 
std::pair< const_iterator, const_iteratorequal_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 IntrusiveSet
 

The documentation for this class was generated from the following file: