momo  3.9
momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet > Class Template Reference

momo::stdish::set is similar to std::set, but much more efficient in memory usage. The implementation is based on a B-tree. More...

#include <set.h>

Public Types

typedef TKey key_type
 
typedef TLessFunc key_compare
 
typedef TAllocator allocator_type
 
typedef TreeSet nested_container_type
 
typedef size_t size_type
 
typedef ptrdiff_t difference_type
 
typedef key_type value_type
 
typedef key_compare value_compare
 
typedef TreeSet::ConstIterator const_iterator
 
typedef TreeSet::Iterator iterator
 
typedef value_typereference
 
typedef const_iterator::Reference const_reference
 
typedef value_typepointer
 
typedef const_iterator::Pointer const_pointer
 
typedef std::reverse_iterator< iteratorreverse_iterator
 
typedef std::reverse_iterator< const_iteratorconst_reverse_iterator
 
typedef internal::set_node_handle< typename TreeSet::ExtractedItemnode_type
 
typedef internal::insert_return_type< iterator, node_typeinsert_return_type
 

Public Member Functions

 set ()
 
 set (const allocator_type &alloc)
 
 set (const key_compare &lessFunc, const allocator_type &alloc=allocator_type())
 
template<typename Iterator >
 set (Iterator first, Iterator last, const allocator_type &alloc=allocator_type())
 
template<typename Iterator >
 set (Iterator first, Iterator last, const key_compare &lessFunc, const allocator_type &alloc=allocator_type())
 
 set (std::initializer_list< value_type > values, const allocator_type &alloc=allocator_type())
 
 set (std::initializer_list< value_type > values, const key_compare &lessFunc, const allocator_type &alloc=allocator_type())
 
 set (set &&right) noexcept
 
 set (set &&right, const momo::internal::Identity< allocator_type > &alloc) noexcept(std::is_empty< allocator_type >::value)
 
 set (const set &right)
 
 set (const set &right, const momo::internal::Identity< allocator_type > &alloc)
 
 ~set ()=default
 
setoperator= (set &&right) noexcept(std::is_empty< allocator_type >::value||std::allocator_traits< allocator_type >::propagate_on_container_move_assignment::value)
 
setoperator= (const set &right)
 
setoperator= (std::initializer_list< value_type > values)
 
void swap (set &right) noexcept
 
const nested_container_typeget_nested_container () const noexcept
 
nested_container_typeget_nested_container () noexcept
 
const_iterator begin () const noexcept
 
const_iterator end () const noexcept
 
const_reverse_iterator rbegin () const noexcept
 
const_reverse_iterator rend () const noexcept
 
const_iterator cbegin () const noexcept
 
const_iterator cend () const noexcept
 
const_reverse_iterator crbegin () const noexcept
 
const_reverse_iterator crend () const noexcept
 
key_compare key_comp () const
 
value_compare value_comp () const
 
allocator_type get_allocator () const noexcept
 
size_type max_size () const noexcept
 
size_type size () const noexcept
 
MOMO_NODISCARD bool empty () const noexcept
 
void clear () noexcept
 
const_iterator find (const key_type &key) const
 
template<typename KeyArg >
momo::internal::EnableIf< IsValidKeyArg< KeyArg >::value, const_iteratorfind (const KeyArg &key) const
 
size_type count (const key_type &key) const
 
template<typename KeyArg >
momo::internal::EnableIf< IsValidKeyArg< KeyArg >::value, size_typecount (const KeyArg &key) const
 
bool contains (const key_type &key) const
 
template<typename KeyArg >
momo::internal::EnableIf< IsValidKeyArg< KeyArg >::value, bool > contains (const KeyArg &key) const
 
const_iterator lower_bound (const key_type &key) const
 
template<typename KeyArg >
momo::internal::EnableIf< IsValidKeyArg< KeyArg >::value, const_iteratorlower_bound (const KeyArg &key) const
 
const_iterator upper_bound (const key_type &key) const
 
template<typename KeyArg >
momo::internal::EnableIf< IsValidKeyArg< KeyArg >::value, const_iteratorupper_bound (const KeyArg &key) const
 
std::pair< const_iterator, const_iteratorequal_range (const key_type &key) const
 
template<typename KeyArg >
momo::internal::EnableIf< IsValidKeyArg< KeyArg >::value, std::pair< const_iterator, const_iterator > > equal_range (const KeyArg &key) const
 
std::pair< iterator, bool > insert (value_type &&value)
 
iterator insert (const_iterator hint, value_type &&value)
 
std::pair< iterator, bool > insert (const value_type &value)
 
iterator insert (const_iterator hint, const value_type &value)
 
insert_return_type insert (node_type &&node)
 
iterator insert (const_iterator hint, node_type &&node)
 
template<typename Iterator >
void insert (Iterator first, Iterator last)
 
void insert (std::initializer_list< value_type > values)
 
template<typename... ValueArgs>
std::pair< iterator, bool > emplace (ValueArgs &&... valueArgs)
 
template<typename ValueArg >
momo::internal::EnableIf< std::is_same< key_type, typename std::decay< ValueArg >::type >::value, std::pair< iterator, bool > > emplace (ValueArg &&valueArg)
 
template<typename... ValueArgs>
iterator emplace_hint (const_iterator hint, ValueArgs &&... valueArgs)
 
template<typename ValueArg >
momo::internal::EnableIf< std::is_same< key_type, typename std::decay< ValueArg >::type >::value, iteratoremplace_hint (const_iterator hint, ValueArg &&valueArg)
 
iterator erase (const_iterator where)
 
iterator erase (const_iterator first, const_iterator last)
 
size_type erase (const key_type &key)
 
node_type extract (const_iterator where)
 
node_type extract (const key_type &key)
 
template<typename Set >
void merge (Set &&set)
 
bool operator== (const set &right) const
 
bool operator!= (const set &right) const
 
bool operator< (const set &right) const
 
bool operator> (const set &right) const
 
bool operator<= (const set &right) const
 
bool operator>= (const set &right) const
 

Friends

void swap (set &left, set &right) noexcept
 
template<typename ValueFilter >
size_type erase_if (set &cont, const ValueFilter &valueFilter)
 

Detailed Description

template<typename TKey, typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
class momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >

momo::stdish::set is similar to std::set, but much more efficient in memory usage. The implementation is based on a B-tree.

Deviations from standard class:

  1. Container items must be movable (preferably without exceptions) or copyable, similar to items of std::vector.
  2. After each addition or removal of the item all iterators and references to items become invalid and should not be used.
  3. Functions begin, cbegin, rend and crend have logarithmic complexity.
  4. If ObjectManager<key_type>::isNothrowAnywayAssignable is false, functions erase can throw exceptions.
  5. Functions merge, extract and insert(node_type&&) move items.

It is allowed to pass to functions insert and emplace references to items within the container.

Function merge can work fast, if container types are same and each key from one container is less than each key from other container.

Member Typedef Documentation

◆ allocator_type

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
typedef TAllocator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::allocator_type

◆ const_iterator

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
typedef TreeSet::ConstIterator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::const_iterator

◆ const_pointer

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
typedef const_iterator::Pointer momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::const_pointer

◆ const_reference

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
typedef const_iterator::Reference momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::const_reference

◆ const_reverse_iterator

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
typedef std::reverse_iterator<const_iterator> momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::const_reverse_iterator

◆ difference_type

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
typedef ptrdiff_t momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::difference_type

◆ insert_return_type

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
typedef internal::insert_return_type<iterator, node_type> momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::insert_return_type

◆ iterator

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
typedef TreeSet::Iterator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::iterator

◆ key_compare

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
typedef TLessFunc momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::key_compare

◆ key_type

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
typedef TKey momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::key_type

◆ nested_container_type

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
typedef TreeSet momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::nested_container_type

◆ node_type

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
typedef internal::set_node_handle<typename TreeSet::ExtractedItem> momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::node_type

◆ pointer

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
typedef value_type* momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::pointer

◆ reference

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
typedef value_type& momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::reference

◆ reverse_iterator

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
typedef std::reverse_iterator<iterator> momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::reverse_iterator

◆ size_type

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
typedef size_t momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::size_type

◆ value_compare

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
typedef key_compare momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::value_compare

◆ value_type

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
typedef key_type momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::value_type

Constructor & Destructor Documentation

◆ set() [1/11]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::set ( )
inline

◆ set() [2/11]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::set ( const allocator_type alloc)
inlineexplicit

◆ set() [3/11]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::set ( const key_compare lessFunc,
const allocator_type alloc = allocator_type() 
)
inlineexplicit

◆ set() [4/11]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
template<typename Iterator >
momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::set ( Iterator  first,
Iterator  last,
const allocator_type alloc = allocator_type() 
)
inline

◆ set() [5/11]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
template<typename Iterator >
momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::set ( Iterator  first,
Iterator  last,
const key_compare lessFunc,
const allocator_type alloc = allocator_type() 
)
inline

◆ set() [6/11]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::set ( std::initializer_list< value_type values,
const allocator_type alloc = allocator_type() 
)
inline

◆ set() [7/11]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::set ( std::initializer_list< value_type values,
const key_compare lessFunc,
const allocator_type alloc = allocator_type() 
)
inline

◆ set() [8/11]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::set ( set< TKey, TLessFunc, TAllocator, TTreeSet > &&  right)
inlinenoexcept

◆ set() [9/11]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::set ( set< TKey, TLessFunc, TAllocator, TTreeSet > &&  right,
const momo::internal::Identity< allocator_type > &  alloc 
)
inlinenoexcept

◆ set() [10/11]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::set ( const set< TKey, TLessFunc, TAllocator, TTreeSet > &  right)
inline

◆ set() [11/11]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::set ( const set< TKey, TLessFunc, TAllocator, TTreeSet > &  right,
const momo::internal::Identity< allocator_type > &  alloc 
)
inline

◆ ~set()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::~set ( )
default

Member Function Documentation

◆ begin()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
const_iterator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::begin ( ) const
inlinenoexcept

◆ cbegin()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
const_iterator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::cbegin ( ) const
inlinenoexcept

◆ cend()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
const_iterator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::cend ( ) const
inlinenoexcept

◆ clear()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
void momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::clear ( )
inlinenoexcept

◆ contains() [1/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
bool momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::contains ( const key_type key) const
inline

◆ contains() [2/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
template<typename KeyArg >
momo::internal::EnableIf<IsValidKeyArg<KeyArg>::value, bool> momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::contains ( const KeyArg &  key) const
inline

◆ count() [1/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
size_type momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::count ( const key_type key) const
inline

◆ count() [2/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
template<typename KeyArg >
momo::internal::EnableIf<IsValidKeyArg<KeyArg>::value, size_type> momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::count ( const KeyArg &  key) const
inline

◆ crbegin()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
const_reverse_iterator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::crbegin ( ) const
inlinenoexcept

◆ crend()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
const_reverse_iterator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::crend ( ) const
inlinenoexcept

◆ emplace() [1/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
template<typename ValueArg >
momo::internal::EnableIf<std::is_same<key_type, typename std::decay<ValueArg>::type>::value, std::pair<iterator, bool> > momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::emplace ( ValueArg &&  valueArg)
inline

◆ emplace() [2/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
template<typename... ValueArgs>
std::pair<iterator, bool> momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::emplace ( ValueArgs &&...  valueArgs)
inline

◆ emplace_hint() [1/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
template<typename ValueArg >
momo::internal::EnableIf<std::is_same<key_type, typename std::decay<ValueArg>::type>::value, iterator> momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::emplace_hint ( const_iterator  hint,
ValueArg &&  valueArg 
)
inline

◆ emplace_hint() [2/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
template<typename... ValueArgs>
iterator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::emplace_hint ( const_iterator  hint,
ValueArgs &&...  valueArgs 
)
inline

◆ empty()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
MOMO_NODISCARD bool momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::empty ( ) const
inlinenoexcept

◆ end()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
const_iterator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::end ( ) const
inlinenoexcept

◆ equal_range() [1/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
std::pair<const_iterator, const_iterator> momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::equal_range ( const key_type key) const
inline

◆ equal_range() [2/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
template<typename KeyArg >
momo::internal::EnableIf<IsValidKeyArg<KeyArg>::value, std::pair<const_iterator, const_iterator> > momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::equal_range ( const KeyArg &  key) const
inline

◆ erase() [1/3]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
size_type momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::erase ( const key_type key)
inline

◆ erase() [2/3]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
iterator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::erase ( const_iterator  first,
const_iterator  last 
)
inline

◆ erase() [3/3]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
iterator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::erase ( const_iterator  where)
inline

◆ extract() [1/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
node_type momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::extract ( const key_type key)
inline

◆ extract() [2/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
node_type momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::extract ( const_iterator  where)
inline

◆ find() [1/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
const_iterator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::find ( const key_type key) const
inline

◆ find() [2/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
template<typename KeyArg >
momo::internal::EnableIf<IsValidKeyArg<KeyArg>::value, const_iterator> momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::find ( const KeyArg &  key) const
inline

◆ get_allocator()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
allocator_type momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::get_allocator ( ) const
inlinenoexcept

◆ get_nested_container() [1/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
const nested_container_type& momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::get_nested_container ( ) const
inlinenoexcept

◆ get_nested_container() [2/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
nested_container_type& momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::get_nested_container ( )
inlinenoexcept

◆ insert() [1/8]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
std::pair<iterator, bool> momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::insert ( const value_type value)
inline

◆ insert() [2/8]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
iterator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::insert ( const_iterator  hint,
const value_type value 
)
inline

◆ insert() [3/8]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
iterator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::insert ( const_iterator  hint,
node_type &&  node 
)
inline

◆ insert() [4/8]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
iterator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::insert ( const_iterator  hint,
value_type &&  value 
)
inline

◆ insert() [5/8]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
template<typename Iterator >
void momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::insert ( Iterator  first,
Iterator  last 
)
inline

◆ insert() [6/8]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
insert_return_type momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::insert ( node_type &&  node)
inline

◆ insert() [7/8]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
void momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::insert ( std::initializer_list< value_type values)
inline

◆ insert() [8/8]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
std::pair<iterator, bool> momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::insert ( value_type &&  value)
inline

◆ key_comp()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
key_compare momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::key_comp ( ) const
inline

◆ lower_bound() [1/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
const_iterator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::lower_bound ( const key_type key) const
inline

◆ lower_bound() [2/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
template<typename KeyArg >
momo::internal::EnableIf<IsValidKeyArg<KeyArg>::value, const_iterator> momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::lower_bound ( const KeyArg &  key) const
inline

◆ max_size()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
size_type momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::max_size ( ) const
inlinenoexcept

◆ merge()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
template<typename Set >
void momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::merge ( Set &&  set)
inline

◆ operator!=()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
bool momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::operator!= ( const set< TKey, TLessFunc, TAllocator, TTreeSet > &  right) const
inline

◆ operator<()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
bool momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::operator< ( const set< TKey, TLessFunc, TAllocator, TTreeSet > &  right) const
inline

◆ operator<=()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
bool momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::operator<= ( const set< TKey, TLessFunc, TAllocator, TTreeSet > &  right) const
inline

◆ operator=() [1/3]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
set& momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::operator= ( const set< TKey, TLessFunc, TAllocator, TTreeSet > &  right)
inline

◆ operator=() [2/3]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
set& momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::operator= ( set< TKey, TLessFunc, TAllocator, TTreeSet > &&  right)
inlinenoexcept

◆ operator=() [3/3]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
set& momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::operator= ( std::initializer_list< value_type values)
inline

◆ operator==()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
bool momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::operator== ( const set< TKey, TLessFunc, TAllocator, TTreeSet > &  right) const
inline

◆ operator>()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
bool momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::operator> ( const set< TKey, TLessFunc, TAllocator, TTreeSet > &  right) const
inline

◆ operator>=()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
bool momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::operator>= ( const set< TKey, TLessFunc, TAllocator, TTreeSet > &  right) const
inline

◆ rbegin()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
const_reverse_iterator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::rbegin ( ) const
inlinenoexcept

◆ rend()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
const_reverse_iterator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::rend ( ) const
inlinenoexcept

◆ size()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
size_type momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::size ( ) const
inlinenoexcept

◆ swap()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
void momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::swap ( set< TKey, TLessFunc, TAllocator, TTreeSet > &  right)
inlinenoexcept

◆ upper_bound() [1/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
const_iterator momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::upper_bound ( const key_type key) const
inline

◆ upper_bound() [2/2]

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
template<typename KeyArg >
momo::internal::EnableIf<IsValidKeyArg<KeyArg>::value, const_iterator> momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::upper_bound ( const KeyArg &  key) const
inline

◆ value_comp()

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
value_compare momo::stdish::set< TKey, TLessFunc, TAllocator, TTreeSet >::value_comp ( ) const
inline

Friends And Related Function Documentation

◆ erase_if

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
template<typename ValueFilter >
size_type erase_if ( set< TKey, TLessFunc, TAllocator, TTreeSet > &  cont,
const ValueFilter &  valueFilter 
)
friend

◆ swap

template<typename TKey , typename TLessFunc = std::less<TKey>, typename TAllocator = std::allocator<TKey>, typename TTreeSet = TreeSet<TKey, TreeTraitsStd<TKey, TLessFunc>, MemManagerStd<TAllocator>>>
void swap ( set< TKey, TLessFunc, TAllocator, TTreeSet > &  left,
set< TKey, TLessFunc, TAllocator, TTreeSet > &  right 
)
friend

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