ordered-map
Classes | Public Types | Public Member Functions | Static Public Attributes | Friends | List of all members
tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType > Class Template Reference

#include <ordered_hash.h>

Inherits Hash, and KeyEqual.

Classes

class  ordered_iterator
 

Public Types

using key_type = typename KeySelect::key_type
 
using value_type = ValueType
 
using size_type = std::size_t
 
using difference_type = std::ptrdiff_t
 
using hasher = Hash
 
using key_equal = KeyEqual
 
using allocator_type = Allocator
 
using reference = value_type &
 
using const_reference = const value_type &
 
using pointer = value_type *
 
using const_pointer = const value_type *
 
using iterator = ordered_iterator< false >
 
using const_iterator = ordered_iterator< true >
 
using reverse_iterator = std::reverse_iterator< iterator >
 
using const_reverse_iterator = std::reverse_iterator< const_iterator >
 
using values_container_type = ValueTypeContainer
 

Public Member Functions

 ordered_hash (size_type bucket_count, const Hash &hash, const KeyEqual &equal, const Allocator &alloc, float max_load_factor)
 
 ordered_hash (const ordered_hash &other)
 
 ordered_hash (ordered_hash &&other) noexcept(std::is_nothrow_move_constructible< Hash >::value &&std::is_nothrow_move_constructible< KeyEqual >::value &&std::is_nothrow_move_constructible< buckets_container_type >::value &&std::is_nothrow_move_constructible< values_container_type >::value)
 
ordered_hashoperator= (const ordered_hash &other)
 
ordered_hashoperator= (ordered_hash &&other)
 
allocator_type get_allocator () const
 
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 rcbegin () const noexcept
 
reverse_iterator rend () noexcept
 
const_reverse_iterator rend () const noexcept
 
const_reverse_iterator rcend () const noexcept
 
bool empty () const noexcept
 
size_type size () const noexcept
 
size_type max_size () const noexcept
 
void clear () noexcept
 
template<typename P >
std::pair< iterator, bool > insert (P &&value)
 
template<typename P >
iterator insert_hint (const_iterator hint, P &&value)
 
template<class InputIt >
void insert (InputIt first, InputIt last)
 
template<class K , class M >
std::pair< iterator, bool > insert_or_assign (K &&key, M &&value)
 
template<class K , class M >
iterator insert_or_assign (const_iterator hint, K &&key, M &&obj)
 
template<class... Args>
std::pair< iterator, bool > emplace (Args &&... args)
 
template<class... Args>
iterator emplace_hint (const_iterator hint, Args &&... args)
 
template<class K , class... Args>
std::pair< iterator, bool > try_emplace (K &&key, Args &&... value_args)
 
template<class K , class... Args>
iterator try_emplace_hint (const_iterator hint, K &&key, Args &&... args)
 
iterator erase (iterator pos)
 
iterator erase (const_iterator pos)
 
iterator erase (const_iterator first, const_iterator last)
 
template<class K >
size_type erase (const K &key)
 
template<class K >
size_type erase (const K &key, std::size_t hash)
 
void swap (ordered_hash &other)
 
template<class K , class U = ValueSelect, typename std::enable_if< has_mapped_type< U >::value >::type * = nullptr>
U::value_type & at (const K &key)
 
template<class K , class U = ValueSelect, typename std::enable_if< has_mapped_type< U >::value >::type * = nullptr>
U::value_type & at (const K &key, std::size_t hash)
 
template<class K , class U = ValueSelect, typename std::enable_if< has_mapped_type< U >::value >::type * = nullptr>
const U::value_type & at (const K &key) const
 
template<class K , class U = ValueSelect, typename std::enable_if< has_mapped_type< U >::value >::type * = nullptr>
const U::value_type & at (const K &key, std::size_t hash) const
 
template<class K , class U = ValueSelect, typename std::enable_if< has_mapped_type< U >::value >::type * = nullptr>
U::value_type & operator[] (K &&key)
 
template<class K >
size_type count (const K &key) const
 
template<class K >
size_type count (const K &key, std::size_t hash) const
 
template<class K >
iterator find (const K &key)
 
template<class K >
iterator find (const K &key, std::size_t hash)
 
template<class K >
const_iterator find (const K &key) const
 
template<class K >
const_iterator find (const K &key, std::size_t hash) const
 
template<class K >
std::pair< iterator, iteratorequal_range (const K &key)
 
template<class K >
std::pair< iterator, iteratorequal_range (const K &key, std::size_t hash)
 
template<class K >
std::pair< const_iterator, const_iteratorequal_range (const K &key) const
 
template<class K >
std::pair< const_iterator, const_iteratorequal_range (const K &key, std::size_t hash) const
 
size_type bucket_count () const
 
size_type max_bucket_count () const
 
float load_factor () const
 
float max_load_factor () const
 
void max_load_factor (float ml)
 
void rehash (size_type count)
 
void reserve (size_type count)
 
hasher hash_function () const
 
key_equal key_eq () const
 
iterator mutable_iterator (const_iterator pos)
 
iterator nth (size_type index)
 
const_iterator nth (size_type index) const
 
const_reference front () const
 
const_reference back () const
 
const values_container_typevalues_container () const noexcept
 
template<class U = values_container_type, typename std::enable_if< is_vector< U >::value >::type * = nullptr>
const values_container_type::value_type * data () const noexcept
 
template<class U = values_container_type, typename std::enable_if< is_vector< U >::value >::type * = nullptr>
size_type capacity () const noexcept
 
void shrink_to_fit ()
 
template<typename P >
std::pair< iterator, bool > insert_at_position (const_iterator pos, P &&value)
 
template<class... Args>
std::pair< iterator, bool > emplace_at_position (const_iterator pos, Args &&... args)
 
template<class K , class... Args>
std::pair< iterator, bool > try_emplace_at_position (const_iterator pos, K &&key, Args &&... value_args)
 
void pop_back ()
 
iterator unordered_erase (iterator pos)
 
iterator unordered_erase (const_iterator pos)
 
template<class K >
size_type unordered_erase (const K &key)
 
template<class K >
size_type unordered_erase (const K &key, std::size_t hash)
 
template<class Serializer >
void serialize (Serializer &serializer) const
 
template<class Deserializer >
void deserialize (Deserializer &deserializer, bool hash_compatible)
 

Static Public Attributes

static const size_type DEFAULT_INIT_BUCKETS_SIZE = 0
 
static constexpr float DEFAULT_MAX_LOAD_FACTOR = 0.75f
 

Friends

bool operator== (const ordered_hash &lhs, const ordered_hash &rhs)
 
bool operator!= (const ordered_hash &lhs, const ordered_hash &rhs)
 
bool operator< (const ordered_hash &lhs, const ordered_hash &rhs)
 
bool operator<= (const ordered_hash &lhs, const ordered_hash &rhs)
 
bool operator> (const ordered_hash &lhs, const ordered_hash &rhs)
 
bool operator>= (const ordered_hash &lhs, const ordered_hash &rhs)
 

Detailed Description

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
class tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >

Internal common class used by ordered_map and ordered_set.

ValueType is what will be stored by ordered_hash (usually std::pair<Key, T> for map and Key for set).

KeySelect should be a FunctionObject which takes a ValueType in parameter and return a reference to the key.

ValueSelect should be a FunctionObject which takes a ValueType in parameter and return a reference to the value. ValueSelect should be void if there is no value (in set for example).

ValueTypeContainer is the container which will be used to store ValueType values. Usually a std::deque<ValueType, Allocator> or std::vector<ValueType, Allocator>.

The orderd_hash structure is a hash table which preserves the order of insertion of the elements. To do so, it stores the values in the ValueTypeContainer (m_values) using emplace_back at each insertion of a new element. Another structure (m_buckets of type std::vector<bucket_entry>) will serve as buckets array for the hash table part. Each bucket stores an index which corresponds to the index in m_values where the bucket's value is and the (truncated) hash of this value. An index is used instead of a pointer to the value to reduce the size of each bucket entry.

To resolve collisions in the buckets array, the structures use robin hood linear probing with backward shift deletion.

Member Typedef Documentation

◆ allocator_type

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
using tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::allocator_type = Allocator

◆ const_iterator

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
using tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::const_iterator = ordered_iterator<true>

◆ const_pointer

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
using tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::const_pointer = const value_type*

◆ const_reference

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
using tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::const_reference = const value_type&

◆ const_reverse_iterator

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
using tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::const_reverse_iterator = std::reverse_iterator<const_iterator>

◆ difference_type

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
using tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::difference_type = std::ptrdiff_t

◆ hasher

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
using tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::hasher = Hash

◆ iterator

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
using tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::iterator = ordered_iterator<false>

◆ key_equal

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
using tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::key_equal = KeyEqual

◆ key_type

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
using tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::key_type = typename KeySelect::key_type

◆ pointer

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
using tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::pointer = value_type*

◆ reference

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
using tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::reference = value_type&

◆ reverse_iterator

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
using tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::reverse_iterator = std::reverse_iterator<iterator>

◆ size_type

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
using tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::size_type = std::size_t

◆ value_type

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
using tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::value_type = ValueType

◆ values_container_type

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
using tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::values_container_type = ValueTypeContainer

Constructor & Destructor Documentation

◆ ordered_hash() [1/3]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::ordered_hash ( size_type  bucket_count,
const Hash &  hash,
const KeyEqual &  equal,
const Allocator &  alloc,
float  max_load_factor 
)
inline

◆ ordered_hash() [2/3]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::ordered_hash ( const ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType > &  other)
inline

◆ ordered_hash() [3/3]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::ordered_hash ( ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType > &&  other)
inlinenoexcept

Member Function Documentation

◆ at() [1/4]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K , class U = ValueSelect, typename std::enable_if< has_mapped_type< U >::value >::type * = nullptr>
U::value_type& tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::at ( const K &  key)
inline

◆ at() [2/4]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K , class U = ValueSelect, typename std::enable_if< has_mapped_type< U >::value >::type * = nullptr>
U::value_type& tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::at ( const K &  key,
std::size_t  hash 
)
inline

◆ at() [3/4]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K , class U = ValueSelect, typename std::enable_if< has_mapped_type< U >::value >::type * = nullptr>
const U::value_type& tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::at ( const K &  key) const
inline

◆ at() [4/4]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K , class U = ValueSelect, typename std::enable_if< has_mapped_type< U >::value >::type * = nullptr>
const U::value_type& tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::at ( const K &  key,
std::size_t  hash 
) const
inline

◆ back()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
const_reference tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::back ( ) const
inline

◆ begin() [1/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::begin ( )
inlinenoexcept

◆ begin() [2/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
const_iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::begin ( ) const
inlinenoexcept

◆ bucket_count()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
size_type tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::bucket_count ( ) const
inline

◆ capacity()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class U = values_container_type, typename std::enable_if< is_vector< U >::value >::type * = nullptr>
size_type tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::capacity ( ) const
inlinenoexcept

◆ cbegin()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
const_iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::cbegin ( ) const
inlinenoexcept

◆ cend()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
const_iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::cend ( ) const
inlinenoexcept

◆ clear()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
void tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::clear ( )
inlinenoexcept

◆ count() [1/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K >
size_type tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::count ( const K &  key) const
inline

◆ count() [2/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K >
size_type tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::count ( const K &  key,
std::size_t  hash 
) const
inline

◆ data()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class U = values_container_type, typename std::enable_if< is_vector< U >::value >::type * = nullptr>
const values_container_type::value_type* tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::data ( ) const
inlinenoexcept

◆ deserialize()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class Deserializer >
void tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::deserialize ( Deserializer &  deserializer,
bool  hash_compatible 
)
inline

◆ emplace()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class... Args>
std::pair<iterator, bool> tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::emplace ( Args &&...  args)
inline

◆ emplace_at_position()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class... Args>
std::pair<iterator, bool> tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::emplace_at_position ( const_iterator  pos,
Args &&...  args 
)
inline

◆ emplace_hint()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class... Args>
iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::emplace_hint ( const_iterator  hint,
Args &&...  args 
)
inline

◆ empty()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
bool tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::empty ( ) const
inlinenoexcept

◆ end() [1/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::end ( )
inlinenoexcept

◆ end() [2/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
const_iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::end ( ) const
inlinenoexcept

◆ equal_range() [1/4]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K >
std::pair<iterator, iterator> tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::equal_range ( const K &  key)
inline

◆ equal_range() [2/4]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K >
std::pair<iterator, iterator> tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::equal_range ( const K &  key,
std::size_t  hash 
)
inline

◆ equal_range() [3/4]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K >
std::pair<const_iterator, const_iterator> tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::equal_range ( const K &  key) const
inline

◆ equal_range() [4/4]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K >
std::pair<const_iterator, const_iterator> tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::equal_range ( const K &  key,
std::size_t  hash 
) const
inline

◆ erase() [1/5]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::erase ( iterator  pos)
inline

Here to avoid template<class K> size_type erase(const K& key) being used when we use an iterator instead of a const_iterator.

◆ erase() [2/5]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::erase ( const_iterator  pos)
inline

◆ erase() [3/5]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::erase ( const_iterator  first,
const_iterator  last 
)
inline

◆ erase() [4/5]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K >
size_type tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::erase ( const K &  key)
inline

◆ erase() [5/5]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K >
size_type tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::erase ( const K &  key,
std::size_t  hash 
)
inline

◆ find() [1/4]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K >
iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::find ( const K &  key)
inline

◆ find() [2/4]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K >
iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::find ( const K &  key,
std::size_t  hash 
)
inline

◆ find() [3/4]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K >
const_iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::find ( const K &  key) const
inline

◆ find() [4/4]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K >
const_iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::find ( const K &  key,
std::size_t  hash 
) const
inline

◆ front()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
const_reference tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::front ( ) const
inline

◆ get_allocator()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
allocator_type tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::get_allocator ( ) const
inline

◆ hash_function()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
hasher tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::hash_function ( ) const
inline

◆ insert() [1/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<typename P >
std::pair<iterator, bool> tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::insert ( P &&  value)
inline

◆ insert() [2/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class InputIt >
void tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::insert ( InputIt  first,
InputIt  last 
)
inline

◆ insert_at_position()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<typename P >
std::pair<iterator, bool> tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::insert_at_position ( const_iterator  pos,
P &&  value 
)
inline

◆ insert_hint()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<typename P >
iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::insert_hint ( const_iterator  hint,
P &&  value 
)
inline

◆ insert_or_assign() [1/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K , class M >
std::pair<iterator, bool> tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::insert_or_assign ( K &&  key,
M &&  value 
)
inline

◆ insert_or_assign() [2/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K , class M >
iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::insert_or_assign ( const_iterator  hint,
K &&  key,
M &&  obj 
)
inline

◆ key_eq()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
key_equal tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::key_eq ( ) const
inline

◆ load_factor()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
float tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::load_factor ( ) const
inline

◆ max_bucket_count()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
size_type tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::max_bucket_count ( ) const
inline

◆ max_load_factor() [1/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
float tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::max_load_factor ( ) const
inline

◆ max_load_factor() [2/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
void tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::max_load_factor ( float  ml)
inline

◆ max_size()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
size_type tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::max_size ( ) const
inlinenoexcept

◆ mutable_iterator()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::mutable_iterator ( const_iterator  pos)
inline

◆ nth() [1/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::nth ( size_type  index)
inline

◆ nth() [2/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
const_iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::nth ( size_type  index) const
inline

◆ operator=() [1/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
ordered_hash& tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::operator= ( const ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType > &  other)
inline

◆ operator=() [2/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
ordered_hash& tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::operator= ( ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType > &&  other)
inline

◆ operator[]()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K , class U = ValueSelect, typename std::enable_if< has_mapped_type< U >::value >::type * = nullptr>
U::value_type& tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::operator[] ( K &&  key)
inline

◆ pop_back()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
void tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::pop_back ( )
inline

◆ rbegin() [1/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
reverse_iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::rbegin ( )
inlinenoexcept

◆ rbegin() [2/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
const_reverse_iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::rbegin ( ) const
inlinenoexcept

◆ rcbegin()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
const_reverse_iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::rcbegin ( ) const
inlinenoexcept

◆ rcend()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
const_reverse_iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::rcend ( ) const
inlinenoexcept

◆ rehash()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
void tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::rehash ( size_type  count)
inline

◆ rend() [1/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
reverse_iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::rend ( )
inlinenoexcept

◆ rend() [2/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
const_reverse_iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::rend ( ) const
inlinenoexcept

◆ reserve()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
void tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::reserve ( size_type  count)
inline

◆ serialize()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class Serializer >
void tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::serialize ( Serializer &  serializer) const
inline

◆ shrink_to_fit()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
void tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::shrink_to_fit ( )
inline

◆ size()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
size_type tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::size ( ) const
inlinenoexcept

◆ swap()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
void tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::swap ( ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType > &  other)
inline

◆ try_emplace()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K , class... Args>
std::pair<iterator, bool> tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::try_emplace ( K &&  key,
Args &&...  value_args 
)
inline

◆ try_emplace_at_position()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K , class... Args>
std::pair<iterator, bool> tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::try_emplace_at_position ( const_iterator  pos,
K &&  key,
Args &&...  value_args 
)
inline

◆ try_emplace_hint()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K , class... Args>
iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::try_emplace_hint ( const_iterator  hint,
K &&  key,
Args &&...  args 
)
inline

◆ unordered_erase() [1/4]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::unordered_erase ( iterator  pos)
inline

Here to avoid template<class K> size_type unordered_erase(const K& key) being used when we use a iterator instead of a const_iterator.

◆ unordered_erase() [2/4]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
iterator tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::unordered_erase ( const_iterator  pos)
inline

◆ unordered_erase() [3/4]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K >
size_type tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::unordered_erase ( const K &  key)
inline

◆ unordered_erase() [4/4]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
template<class K >
size_type tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::unordered_erase ( const K &  key,
std::size_t  hash 
)
inline

If we are not erasing the last element in m_values, we swap the element we are erasing with the last element. We then would just have to do a pop_back() in m_values.

◆ values_container()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
const values_container_type& tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::values_container ( ) const
inlinenoexcept

Friends And Related Function Documentation

◆ operator!=

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
bool operator!= ( const ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType > &  lhs,
const ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType > &  rhs 
)
friend

◆ operator<

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
bool operator< ( const ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType > &  lhs,
const ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType > &  rhs 
)
friend

◆ operator<=

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
bool operator<= ( const ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType > &  lhs,
const ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType > &  rhs 
)
friend

◆ operator==

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
bool operator== ( const ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType > &  lhs,
const ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType > &  rhs 
)
friend

◆ operator>

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
bool operator> ( const ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType > &  lhs,
const ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType > &  rhs 
)
friend

◆ operator>=

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
bool operator>= ( const ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType > &  lhs,
const ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType > &  rhs 
)
friend

Member Data Documentation

◆ DEFAULT_INIT_BUCKETS_SIZE

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
const size_type tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::DEFAULT_INIT_BUCKETS_SIZE = 0
static

◆ DEFAULT_MAX_LOAD_FACTOR

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, class ValueTypeContainer, class IndexType>
constexpr float tsl::detail_ordered_hash::ordered_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, ValueTypeContainer, IndexType >::DEFAULT_MAX_LOAD_FACTOR = 0.75f
static

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