Maipa's Standard Library Extension 1.5.6
mstd
Loading...
Searching...
No Matches
mstd::ordered_set< T > Class Template Reference

#include <ordered_set.hpp>

Collaboration diagram for mstd::ordered_set< T >:
[legend]

Public Types

using value_type = remove_cvref_t<T>
using iterator = _MSTD_TYPENAME17 std::vector<value_type>::iterator
using const_iterator = _MSTD_TYPENAME17 std::vector<value_type>::const_iterator
using reverse_iterator = _MSTD_TYPENAME17 std::vector<value_type>::reverse_iterator
using const_reverse_iterator = _MSTD_TYPENAME17 std::vector<value_type>::const_reverse_iterator

Public Member Functions

_MSTD_CONSTEXPR20 ordered_set ()=default
_MSTD_CONSTEXPR20 ordered_set (const ordered_set &other)=default
_MSTD_CONSTEXPR20 ordered_set (ordered_set &&other) noexcept=default
_MSTD_CONSTEXPR20 ordered_set (std::initializer_list< value_type > init)
template<mstd::iterator_of< value_type > Iter>
_MSTD_CONSTEXPR20 ordered_set (Iter begin, Iter end)
_MSTD_CONSTEXPR20 ~ordered_set ()=default
_MSTD_CONSTEXPR20 ordered_setoperator= (const ordered_set &other)=default
_MSTD_CONSTEXPR20 ordered_setoperator= (ordered_set &&other) noexcept=default
template<class... Args>
_MSTD_CONSTEXPR20 value_typeemplace (const_iterator where, Args &&... args) _MSTD_REQUIRES((std
template<class... Args>
_MSTD_CONSTEXPR20 value_typeemplace_back (Args &&... args) _MSTD_REQUIRES((std
_MSTD_CONSTEXPR20 value_typeinsert (const_iterator where, value_type &&item)
_MSTD_CONSTEXPR20 value_typeinsert (const_iterator where, const value_type &item)
template<mstd::iterator_of< value_type > Iter>
_MSTD_CONSTEXPR20 void insert (const_iterator where, Iter begin, Iter end)
_MSTD_CONSTEXPR20 void insert (const_iterator where, std::initializer_list< value_type > init)
_MSTD_CONSTEXPR20 value_typeinsert_back (const value_type &item)
_MSTD_CONSTEXPR20 value_typeinsert_back (value_type &&item)
template<mstd::iterator_of< value_type > Iter>
_MSTD_CONSTEXPR20 void insert_back (Iter begin, Iter end)
_MSTD_CONSTEXPR20 void insert_back (std::initializer_list< value_type > init)
_MSTD_CONSTEXPR20 void erase (const value_type &item)
_MSTD_CONSTEXPR20 void erase (value_type &&item)
_MSTD_CONSTEXPR20 bool contains (const value_type &item) const
_MSTD_CONSTEXPR20 bool contains (value_type &&item) const
_MSTD_CONSTEXPR20 iterator find (const value_type &item)
_MSTD_CONSTEXPR20 iterator find (value_type &&item)
_MSTD_CONSTEXPR20 const_iterator find (const value_type &item) const
_MSTD_CONSTEXPR20 size_t size () const
_MSTD_CONSTEXPR20 bool empty () const
_MSTD_CONSTEXPR20 void clear ()
_MSTD_CONSTEXPR20 value_typefront ()
_MSTD_CONSTEXPR20 const value_typefront () const
_MSTD_CONSTEXPR20 value_typeback ()
_MSTD_CONSTEXPR20 const value_typeback () const
_MSTD_CONSTEXPR20 value_typeat (const size_t idx)
_MSTD_CONSTEXPR20 const value_typeat (const size_t idx) const
_MSTD_CONSTEXPR20 iterator begin ()
_MSTD_CONSTEXPR20 iterator end ()
_MSTD_CONSTEXPR20 const_iterator begin () const
_MSTD_CONSTEXPR20 const_iterator end () const
_MSTD_CONSTEXPR20 const_iterator cbegin () const
_MSTD_CONSTEXPR20 const_iterator cend () const
_MSTD_CONSTEXPR20 reverse_iterator rbegin ()
_MSTD_CONSTEXPR20 reverse_iterator rend ()
_MSTD_CONSTEXPR20 const_reverse_iterator rbegin () const
_MSTD_CONSTEXPR20 const_reverse_iterator rend () const
_MSTD_CONSTEXPR20 const_reverse_iterator crbegin () const
_MSTD_CONSTEXPR20 const_reverse_iterator crend () const
_MSTD_CONSTEXPR20 bool operator== (const ordered_set &other) const
_MSTD_CONSTEXPR20 bool operator!= (const ordered_set &other) const
_MSTD_CONSTEXPR20 value_typeoperator[] (const size_t idx)
_MSTD_CONSTEXPR20 const value_typeoperator[] (const size_t idx) const

Private Member Functions

_MSTD_CONSTEXPR20 void _update_indexes (const size_t from)
template<class U>
_MSTD_CONSTEXPR20 value_type_insert (const_iterator where, U &&item)
template<class U>
_MSTD_CONSTEXPR20 value_type_insert_back (U &&item)
template<class U>
_MSTD_CONSTEXPR20 void _erase (U &&item)
template<class U>
_MSTD_CONSTEXPR20 bool _contains (U &&item) const
template<class U>
_MSTD_CONSTEXPR20 iterator _find (U &&item)
template<class U>
_MSTD_CONSTEXPR20 const_iterator _find (U &&item) const

Private Attributes

std::vector< value_type_orderedElements
std::unordered_map< value_type, size_t > _elementsMap

Member Typedef Documentation

◆ const_iterator

template<class T>
using mstd::ordered_set< T >::const_iterator = _MSTD_TYPENAME17 std::vector<value_type>::const_iterator

◆ const_reverse_iterator

template<class T>
using mstd::ordered_set< T >::const_reverse_iterator = _MSTD_TYPENAME17 std::vector<value_type>::const_reverse_iterator

◆ iterator

template<class T>
using mstd::ordered_set< T >::iterator = _MSTD_TYPENAME17 std::vector<value_type>::iterator

◆ reverse_iterator

template<class T>
using mstd::ordered_set< T >::reverse_iterator = _MSTD_TYPENAME17 std::vector<value_type>::reverse_iterator

◆ value_type

template<class T>
using mstd::ordered_set< T >::value_type = remove_cvref_t<T>

Constructor & Destructor Documentation

◆ ordered_set() [1/5]

template<class T>
_MSTD_CONSTEXPR20 mstd::ordered_set< T >::ordered_set ( )
default

◆ ordered_set() [2/5]

template<class T>
_MSTD_CONSTEXPR20 mstd::ordered_set< T >::ordered_set ( const ordered_set< T > & other)
default

◆ ordered_set() [3/5]

template<class T>
_MSTD_CONSTEXPR20 mstd::ordered_set< T >::ordered_set ( ordered_set< T > && other)
defaultnoexcept

◆ ordered_set() [4/5]

template<class T>
_MSTD_CONSTEXPR20 mstd::ordered_set< T >::ordered_set ( std::initializer_list< value_type > init)
inline

◆ ordered_set() [5/5]

template<class T>
template<mstd::iterator_of< value_type > Iter>
_MSTD_CONSTEXPR20 mstd::ordered_set< T >::ordered_set ( Iter begin,
Iter end )
inline

◆ ~ordered_set()

template<class T>
_MSTD_CONSTEXPR20 mstd::ordered_set< T >::~ordered_set ( )
default

Member Function Documentation

◆ _contains()

template<class T>
template<class U>
_MSTD_CONSTEXPR20 bool mstd::ordered_set< T >::_contains ( U && item) const
inlinenodiscardprivate

◆ _erase()

template<class T>
template<class U>
_MSTD_CONSTEXPR20 void mstd::ordered_set< T >::_erase ( U && item)
inlineprivate

◆ _find() [1/2]

template<class T>
template<class U>
_MSTD_CONSTEXPR20 iterator mstd::ordered_set< T >::_find ( U && item)
inlinenodiscardprivate

◆ _find() [2/2]

template<class T>
template<class U>
_MSTD_CONSTEXPR20 const_iterator mstd::ordered_set< T >::_find ( U && item) const
inlinenodiscardprivate

◆ _insert()

template<class T>
template<class U>
_MSTD_CONSTEXPR20 value_type & mstd::ordered_set< T >::_insert ( const_iterator where,
U && item )
inlineprivate

◆ _insert_back()

template<class T>
template<class U>
_MSTD_CONSTEXPR20 value_type & mstd::ordered_set< T >::_insert_back ( U && item)
inlineprivate

◆ _update_indexes()

template<class T>
_MSTD_CONSTEXPR20 void mstd::ordered_set< T >::_update_indexes ( const size_t from)
inlineprivate

◆ at() [1/2]

template<class T>
_MSTD_CONSTEXPR20 value_type & mstd::ordered_set< T >::at ( const size_t idx)
inlinenodiscard

◆ at() [2/2]

template<class T>
_MSTD_CONSTEXPR20 const value_type & mstd::ordered_set< T >::at ( const size_t idx) const
inlinenodiscard

◆ back() [1/2]

template<class T>
_MSTD_CONSTEXPR20 value_type & mstd::ordered_set< T >::back ( )
inlinenodiscard

◆ back() [2/2]

template<class T>
_MSTD_CONSTEXPR20 const value_type & mstd::ordered_set< T >::back ( ) const
inlinenodiscard

◆ begin() [1/2]

template<class T>
_MSTD_CONSTEXPR20 iterator mstd::ordered_set< T >::begin ( )
inlinenodiscard

◆ begin() [2/2]

template<class T>
_MSTD_CONSTEXPR20 const_iterator mstd::ordered_set< T >::begin ( ) const
inlinenodiscard

◆ cbegin()

template<class T>
_MSTD_CONSTEXPR20 const_iterator mstd::ordered_set< T >::cbegin ( ) const
inlinenodiscard

◆ cend()

template<class T>
_MSTD_CONSTEXPR20 const_iterator mstd::ordered_set< T >::cend ( ) const
inlinenodiscard

◆ clear()

template<class T>
_MSTD_CONSTEXPR20 void mstd::ordered_set< T >::clear ( )
inline

◆ contains() [1/2]

template<class T>
_MSTD_CONSTEXPR20 bool mstd::ordered_set< T >::contains ( const value_type & item) const
inlinenodiscard

◆ contains() [2/2]

template<class T>
_MSTD_CONSTEXPR20 bool mstd::ordered_set< T >::contains ( value_type && item) const
inlinenodiscard

◆ crbegin()

template<class T>
_MSTD_CONSTEXPR20 const_reverse_iterator mstd::ordered_set< T >::crbegin ( ) const
inlinenodiscard

◆ crend()

template<class T>
_MSTD_CONSTEXPR20 const_reverse_iterator mstd::ordered_set< T >::crend ( ) const
inlinenodiscard

◆ emplace()

template<class T>
template<class... Args>
_MSTD_CONSTEXPR20 value_type & mstd::ordered_set< T >::emplace ( const_iterator where,
Args &&... args )
inline

◆ emplace_back()

template<class T>
template<class... Args>
_MSTD_CONSTEXPR20 value_type & mstd::ordered_set< T >::emplace_back ( Args &&... args)
inline

◆ empty()

template<class T>
_MSTD_CONSTEXPR20 bool mstd::ordered_set< T >::empty ( ) const
inlinenodiscard

◆ end() [1/2]

template<class T>
_MSTD_CONSTEXPR20 iterator mstd::ordered_set< T >::end ( )
inlinenodiscard

◆ end() [2/2]

template<class T>
_MSTD_CONSTEXPR20 const_iterator mstd::ordered_set< T >::end ( ) const
inlinenodiscard

◆ erase() [1/2]

template<class T>
_MSTD_CONSTEXPR20 void mstd::ordered_set< T >::erase ( const value_type & item)
inline

◆ erase() [2/2]

template<class T>
_MSTD_CONSTEXPR20 void mstd::ordered_set< T >::erase ( value_type && item)
inline

◆ find() [1/3]

template<class T>
_MSTD_CONSTEXPR20 iterator mstd::ordered_set< T >::find ( const value_type & item)
inlinenodiscard

◆ find() [2/3]

template<class T>
_MSTD_CONSTEXPR20 const_iterator mstd::ordered_set< T >::find ( const value_type & item) const
inlinenodiscard

◆ find() [3/3]

template<class T>
_MSTD_CONSTEXPR20 iterator mstd::ordered_set< T >::find ( value_type && item)
inlinenodiscard

◆ front() [1/2]

template<class T>
_MSTD_CONSTEXPR20 value_type & mstd::ordered_set< T >::front ( )
inlinenodiscard

◆ front() [2/2]

template<class T>
_MSTD_CONSTEXPR20 const value_type & mstd::ordered_set< T >::front ( ) const
inlinenodiscard

◆ insert() [1/4]

template<class T>
_MSTD_CONSTEXPR20 value_type & mstd::ordered_set< T >::insert ( const_iterator where,
const value_type & item )
inline

◆ insert() [2/4]

template<class T>
template<mstd::iterator_of< value_type > Iter>
_MSTD_CONSTEXPR20 void mstd::ordered_set< T >::insert ( const_iterator where,
Iter begin,
Iter end )
inline

◆ insert() [3/4]

template<class T>
_MSTD_CONSTEXPR20 void mstd::ordered_set< T >::insert ( const_iterator where,
std::initializer_list< value_type > init )
inline

◆ insert() [4/4]

template<class T>
_MSTD_CONSTEXPR20 value_type & mstd::ordered_set< T >::insert ( const_iterator where,
value_type && item )
inline

◆ insert_back() [1/4]

template<class T>
_MSTD_CONSTEXPR20 value_type & mstd::ordered_set< T >::insert_back ( const value_type & item)
inline

◆ insert_back() [2/4]

template<class T>
template<mstd::iterator_of< value_type > Iter>
_MSTD_CONSTEXPR20 void mstd::ordered_set< T >::insert_back ( Iter begin,
Iter end )
inline

◆ insert_back() [3/4]

template<class T>
_MSTD_CONSTEXPR20 void mstd::ordered_set< T >::insert_back ( std::initializer_list< value_type > init)
inline

◆ insert_back() [4/4]

template<class T>
_MSTD_CONSTEXPR20 value_type & mstd::ordered_set< T >::insert_back ( value_type && item)
inline

◆ operator!=()

template<class T>
_MSTD_CONSTEXPR20 bool mstd::ordered_set< T >::operator!= ( const ordered_set< T > & other) const
inlinenodiscard

◆ operator=() [1/2]

template<class T>
_MSTD_CONSTEXPR20 ordered_set & mstd::ordered_set< T >::operator= ( const ordered_set< T > & other)
default

◆ operator=() [2/2]

template<class T>
_MSTD_CONSTEXPR20 ordered_set & mstd::ordered_set< T >::operator= ( ordered_set< T > && other)
defaultnoexcept

◆ operator==()

template<class T>
_MSTD_CONSTEXPR20 bool mstd::ordered_set< T >::operator== ( const ordered_set< T > & other) const
inlinenodiscard

◆ operator[]() [1/2]

template<class T>
_MSTD_CONSTEXPR20 value_type & mstd::ordered_set< T >::operator[] ( const size_t idx)
inlinenodiscard

◆ operator[]() [2/2]

template<class T>
_MSTD_CONSTEXPR20 const value_type & mstd::ordered_set< T >::operator[] ( const size_t idx) const
inlinenodiscard

◆ rbegin() [1/2]

template<class T>
_MSTD_CONSTEXPR20 reverse_iterator mstd::ordered_set< T >::rbegin ( )
inlinenodiscard

◆ rbegin() [2/2]

template<class T>
_MSTD_CONSTEXPR20 const_reverse_iterator mstd::ordered_set< T >::rbegin ( ) const
inlinenodiscard

◆ rend() [1/2]

template<class T>
_MSTD_CONSTEXPR20 reverse_iterator mstd::ordered_set< T >::rend ( )
inlinenodiscard

◆ rend() [2/2]

template<class T>
_MSTD_CONSTEXPR20 const_reverse_iterator mstd::ordered_set< T >::rend ( ) const
inlinenodiscard

◆ size()

template<class T>
_MSTD_CONSTEXPR20 size_t mstd::ordered_set< T >::size ( ) const
inlinenodiscard

Member Data Documentation

◆ _elementsMap

template<class T>
std::unordered_map<value_type, size_t> mstd::ordered_set< T >::_elementsMap
private

◆ _orderedElements

template<class T>
std::vector<value_type> mstd::ordered_set< T >::_orderedElements
private