|
template<class OC = OverflowContainer, typename std::enable_if<!has_key_compare< OC >::value >::type * = nullptr> |
| hopscotch_hash (size_type bucket_count, const Hash &my_hash, const KeyEqual &equal, const Allocator &alloc, float max_load_factor) |
|
template<class OC = OverflowContainer, typename std::enable_if< has_key_compare< OC >::value >::type * = nullptr> |
| hopscotch_hash (size_type bucket_count, const Hash &p_hash, const KeyEqual &equal, const Allocator &alloc, float max_load_factor, const typename OC::key_compare &comp) |
|
| hopscotch_hash (const hopscotch_hash &other) |
|
| hopscotch_hash (hopscotch_hash &&other) noexcept(std::is_nothrow_move_constructible< Hash >::value &&std::is_nothrow_move_constructible< KeyEqual >::value &&std::is_nothrow_move_constructible< GrowthPolicy >::value &&std::is_nothrow_move_constructible< buckets_container_type >::value &&std::is_nothrow_move_constructible< overflow_container_type >::value) |
|
hopscotch_hash & | operator= (const hopscotch_hash &other) |
|
hopscotch_hash & | operator= (hopscotch_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 |
|
bool | empty () const noexcept |
|
size_type | size () const noexcept |
|
size_type | max_size () const noexcept |
|
void | clear () noexcept |
|
std::pair< iterator, bool > | insert (const value_type &value) |
|
template<class P , typename std::enable_if< std::is_constructible< value_type, P && >::value >::type * = nullptr> |
std::pair< iterator, bool > | insert (P &&value) |
|
std::pair< iterator, bool > | insert (value_type &&value) |
|
iterator | insert (const_iterator hint, const value_type &value) |
|
template<class P , typename std::enable_if< std::is_constructible< value_type, P && >::value >::type * = nullptr> |
iterator | insert (const_iterator hint, P &&value) |
|
iterator | insert (const_iterator hint, value_type &&value) |
|
template<class InputIt > |
void | insert (InputIt first, InputIt last) |
|
template<class M > |
std::pair< iterator, bool > | insert_or_assign (const key_type &k, M &&obj) |
|
template<class M > |
std::pair< iterator, bool > | insert_or_assign (key_type &&k, M &&obj) |
|
template<class M > |
iterator | insert_or_assign (const_iterator hint, const key_type &k, M &&obj) |
|
template<class M > |
iterator | insert_or_assign (const_iterator hint, key_type &&k, 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... Args> |
std::pair< iterator, bool > | try_emplace (const key_type &k, Args &&...args) |
|
template<class... Args> |
std::pair< iterator, bool > | try_emplace (key_type &&k, Args &&...args) |
|
template<class... Args> |
iterator | try_emplace (const_iterator hint, const key_type &k, Args &&...args) |
|
template<class... Args> |
iterator | try_emplace (const_iterator hint, key_type &&k, 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 my_hash) |
|
void | swap (hopscotch_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 my_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 my_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 my_hash) const |
|
template<class K > |
iterator | find (const K &key) |
|
template<class K > |
iterator | find (const K &key, std::size_t my_hash) |
|
template<class K > |
const_iterator | find (const K &key) const |
|
template<class K > |
const_iterator | find (const K &key, std::size_t my_hash) const |
|
template<class K > |
bool | contains (const K &key) const |
|
template<class K > |
bool | contains (const K &key, std::size_t my_hash) const |
|
template<class K > |
std::pair< iterator, iterator > | equal_range (const K &key) |
|
template<class K > |
std::pair< iterator, iterator > | equal_range (const K &key, std::size_t my_hash) |
|
template<class K > |
std::pair< const_iterator, const_iterator > | equal_range (const K &key) const |
|
template<class K > |
std::pair< const_iterator, const_iterator > | equal_range (const K &key, std::size_t my_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) |
|
size_type | overflow_size () const noexcept |
|
template<class U = OverflowContainer, typename std::enable_if< has_key_compare< U >::value >::type * = nullptr> |
U::key_compare | key_comp () const |
|
|
template<class K > |
std::size_t | hash_key (const K &key) const |
|
template<class K1 , class K2 > |
bool | compare_keys (const K1 &key1, const K2 &key2) const |
|
std::size_t | bucket_for_hash (std::size_t my_hash) const |
|
template<typename U = value_type, typename std::enable_if< std::is_nothrow_move_constructible< U >::value >::type * = nullptr> |
void | rehash_impl (size_type count_) |
|
template<typename U = value_type, typename std::enable_if< std::is_copy_constructible< U >::value &&!std::is_nothrow_move_constructible< U >::value >::type * = nullptr> |
void | rehash_impl (size_type count_) |
|
iterator_overflow | mutable_overflow_iterator (const_iterator_overflow it) |
|
iterator_overflow | erase_from_overflow (const_iterator_overflow pos, std::size_t ibucket_for_hash) |
|
void | erase_from_bucket (hopscotch_bucket &bucket_for_value, std::size_t ibucket_for_hash) noexcept |
|
template<class K , class M > |
std::pair< iterator, bool > | insert_or_assign_impl (K &&key, M &&obj) |
|
template<typename P , class... Args> |
std::pair< iterator, bool > | try_emplace_impl (P &&key, Args &&...args_value) |
|
template<typename P > |
std::pair< iterator, bool > | insert_impl (P &&value) |
|
template<typename... Args> |
std::pair< iterator, bool > | insert_value (std::size_t ibucket_for_hash, std::size_t my_hash, Args &&...value_type_args) |
|
bool | will_neighborhood_change_on_rehash (size_t ibucket_neighborhood_check) const |
|
std::size_t | find_empty_bucket (std::size_t ibucket_start) const |
|
template<typename... Args> |
iterator_buckets | insert_in_bucket (std::size_t ibucket_empty, std::size_t ibucket_for_hash, std::size_t my_hash, Args &&...value_type_args) |
|
template<class... Args, class U = OverflowContainer, typename std::enable_if<!has_key_compare< U >::value >::type * = nullptr> |
iterator_overflow | insert_in_overflow (std::size_t ibucket_for_hash, Args &&...value_type_args) |
|
template<class... Args, class U = OverflowContainer, typename std::enable_if< has_key_compare< U >::value >::type * = nullptr> |
iterator_overflow | insert_in_overflow (std::size_t ibucket_for_hash, Args &&...value_type_args) |
|
bool | swap_empty_bucket_closer (std::size_t &ibucket_empty_in_out) |
|
template<class K , class U = ValueSelect, typename std::enable_if< has_mapped_type< U >::value >::type * = nullptr> |
U::value_type * | find_value_impl (const K &key, std::size_t my_hash, hopscotch_bucket *bucket_for_hash) |
|
template<class K , class U = ValueSelect, typename std::enable_if< has_mapped_type< U >::value >::type * = nullptr> |
const U::value_type * | find_value_impl (const K &key, std::size_t my_hash, const hopscotch_bucket *bucket_for_hash) const |
|
template<class K > |
size_type | count_impl (const K &key, std::size_t my_hash, const hopscotch_bucket *bucket_for_hash) const |
|
template<class K > |
iterator | find_impl (const K &key, std::size_t my_hash, hopscotch_bucket *bucket_for_hash) |
|
template<class K > |
const_iterator | find_impl (const K &key, std::size_t my_hash, const hopscotch_bucket *bucket_for_hash) const |
|
template<class K > |
hopscotch_bucket * | find_in_buckets (const K &key, std::size_t my_hash, hopscotch_bucket *bucket_for_hash) |
|
template<class K > |
const hopscotch_bucket * | find_in_buckets (const K &key, std::size_t my_hash, const hopscotch_bucket *bucket_for_hash) const |
|
template<class K , class U = OverflowContainer, typename std::enable_if<!has_key_compare< U >::value >::type * = nullptr> |
iterator_overflow | find_in_overflow (const K &key) |
|
template<class K , class U = OverflowContainer, typename std::enable_if<!has_key_compare< U >::value >::type * = nullptr> |
const_iterator_overflow | find_in_overflow (const K &key) const |
|
template<class K , class U = OverflowContainer, typename std::enable_if< has_key_compare< U >::value >::type * = nullptr> |
iterator_overflow | find_in_overflow (const K &key) |
|
template<class K , class U = OverflowContainer, typename std::enable_if< has_key_compare< U >::value >::type * = nullptr> |
const_iterator_overflow | find_in_overflow (const K &key) const |
|
template<class U = OverflowContainer, typename std::enable_if<!has_key_compare< U >::value >::type * = nullptr> |
hopscotch_hash | new_hopscotch_hash (size_type bucket_count) |
|
template<class U = OverflowContainer, typename std::enable_if< has_key_compare< U >::value >::type * = nullptr> |
hopscotch_hash | new_hopscotch_hash (size_type bucket_count) |
|
hopscotch_bucket * | static_empty_bucket_ptr () |
|
template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, unsigned int NeighborhoodSize, bool StoreHash, class GrowthPolicy, class OverflowContainer>
class tsl::detail_hopscotch_hash::hopscotch_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, NeighborhoodSize, StoreHash, GrowthPolicy, OverflowContainer >
Internal common class used by (b)hopscotch_map and (b)hopscotch_set.
ValueType is what will be stored by hopscotch_hash (usually std::pair<Key, T> for a map and Key for a set).
KeySelect should be a FunctionObject which takes a ValueType in parameter and returns a reference to the key.
ValueSelect should be a FunctionObject which takes a ValueType in parameter and returns a reference to the value. ValueSelect should be void if there is no value (in a set for example).
OverflowContainer will be used as containers for overflown elements. Usually it should be a list<ValueType> or a set<Key>/map<Key, T>.