Similar to tsl::hopscotch_map but instead of using a list for overflowing elements it uses a binary search tree. It thus needs an additional template parameter Compare. Compare should be arithmetically coherent with KeyEqual.
The binary search tree allows the map to have a worst-case scenario of O(log n) for search and delete, even if the hash function maps all the elements to the same bucket. For insert, the amortized worst case is O(log n), but the worst case is O(n) in case of rehash.
This makes the map resistant to DoS attacks (but doesn't preclude you to have a good hash function, as an element in the bucket array is faster to retrieve than in the tree).
Implementation of a hash map using the hopscotch hashing algorithm.
The Key and the value T must be either nothrow move-constructible, copy-constuctible or both.
The size of the neighborhood (NeighborhoodSize) must be > 0 and <= 62 if StoreHash is false. When StoreHash is true, 32-bits of the hash will be stored alongside the neighborhood limiting the NeighborhoodSize to <= 30. There is no memory usage difference between 'NeighborhoodSize 62; StoreHash false' and 'NeighborhoodSize 30; StoreHash true'.
Storing the hash may improve performance on insert during the rehash process if the hash takes time to compute. It may also improve read performance if the KeyEqual function takes time (or incurs a cache-miss). If used with simple Hash and KeyEqual it may slow things down.
StoreHash can only be set if the GrowthPolicy is set to tsl::power_of_two_growth_policy.
GrowthPolicy defines how the map grows and consequently how a hash value is mapped to a bucket. By default the map uses tsl::power_of_two_growth_policy. This policy keeps the number of buckets to a power of two and uses a mask to map the hash to a bucket instead of the slow modulo. You may define your own growth policy, check tsl::power_of_two_growth_policy for the interface.
If the destructors of Key or T throw an exception, behaviour of the class is undefined.
Iterators invalidation:
Definition at line 65 of file hopscotch_sc_map.h.
#include <hopscotch_sc_map.h>
Data Structures | |
class | KeySelect |
class | ValueSelect |
Public Types | |
using | key_type = typename ht::key_type |
using | mapped_type = T |
using | value_type = typename ht::value_type |
using | size_type = typename ht::size_type |
using | difference_type = typename ht::difference_type |
using | hasher = typename ht::hasher |
using | key_equal = typename ht::key_equal |
using | key_compare = Compare |
using | allocator_type = typename ht::allocator_type |
using | reference = typename ht::reference |
using | const_reference = typename ht::const_reference |
using | pointer = typename ht::pointer |
using | const_pointer = typename ht::const_pointer |
using | iterator = typename ht::iterator |
using | const_iterator = typename ht::const_iterator |
Public Member Functions | |
hopscotch_sc_map (size_type bucket_count, const Hash &hash=Hash(), const KeyEqual &equal=KeyEqual(), const Allocator &alloc=Allocator(), const Compare &comp=Compare()) | |
hopscotch_sc_map (size_type bucket_count, const Allocator &alloc) | |
hopscotch_sc_map (size_type bucket_count, const Hash &hash, const Allocator &alloc) | |
hopscotch_sc_map (const Allocator &alloc) | |
template<class InputIt > | |
hopscotch_sc_map (InputIt first, InputIt last, size_type bucket_count=ht::DEFAULT_INIT_BUCKETS_SIZE, const Hash &hash=Hash(), const KeyEqual &equal=KeyEqual(), const Allocator &alloc=Allocator()) | |
template<class InputIt > | |
hopscotch_sc_map (InputIt first, InputIt last, size_type bucket_count, const Allocator &alloc) | |
template<class InputIt > | |
hopscotch_sc_map (InputIt first, InputIt last, size_type bucket_count, const Hash &hash, const Allocator &alloc) | |
hopscotch_sc_map (std::initializer_list< value_type > init, size_type bucket_count=ht::DEFAULT_INIT_BUCKETS_SIZE, const Hash &hash=Hash(), const KeyEqual &equal=KeyEqual(), const Allocator &alloc=Allocator()) | |
hopscotch_sc_map (std::initializer_list< value_type > init, size_type bucket_count, const Allocator &alloc) | |
hopscotch_sc_map (std::initializer_list< value_type > init, size_type bucket_count, const Hash &hash, const Allocator &alloc) | |
hopscotch_sc_map & | operator= (std::initializer_list< value_type > ilist) |
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) |
void | insert (std::initializer_list< value_type > ilist) |
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) |
size_type | erase (const key_type &key) |
size_type | erase (const key_type &key, std::size_t precalculated_hash) |
template<class K , class KE = KeyEqual, class CP = Compare, typename std::enable_if< has_is_transparent< KE >::value &&has_is_transparent< CP >::value >::type * = nullptr> | |
size_type | erase (const K &key) |
template<class K , class KE = KeyEqual, class CP = Compare, typename std::enable_if< has_is_transparent< KE >::value &&has_is_transparent< CP >::value >::type * = nullptr> | |
size_type | erase (const K &key, std::size_t precalculated_hash) |
void | swap (hopscotch_sc_map &other) |
T & | at (const Key &key) |
T & | at (const Key &key, std::size_t precalculated_hash) |
const T & | at (const Key &key) const |
const T & | at (const Key &key, std::size_t precalculated_hash) const |
template<class K , class KE = KeyEqual, class CP = Compare, typename std::enable_if< has_is_transparent< KE >::value &&has_is_transparent< CP >::value >::type * = nullptr> | |
T & | at (const K &key) |
template<class K , class KE = KeyEqual, class CP = Compare, typename std::enable_if< has_is_transparent< KE >::value &&has_is_transparent< CP >::value >::type * = nullptr> | |
T & | at (const K &key, std::size_t precalculated_hash) |
template<class K , class KE = KeyEqual, class CP = Compare, typename std::enable_if< has_is_transparent< KE >::value &&has_is_transparent< CP >::value >::type * = nullptr> | |
const T & | at (const K &key) const |
template<class K , class KE = KeyEqual, class CP = Compare, typename std::enable_if< has_is_transparent< KE >::value &&has_is_transparent< CP >::value >::type * = nullptr> | |
const T & | at (const K &key, std::size_t precalculated_hash) const |
T & | operator[] (const Key &key) |
T & | operator[] (Key &&key) |
size_type | count (const Key &key) const |
size_type | count (const Key &key, std::size_t precalculated_hash) const |
template<class K , class KE = KeyEqual, class CP = Compare, typename std::enable_if< has_is_transparent< KE >::value &&has_is_transparent< CP >::value >::type * = nullptr> | |
size_type | count (const K &key) const |
template<class K , class KE = KeyEqual, class CP = Compare, typename std::enable_if< has_is_transparent< KE >::value &&has_is_transparent< CP >::value >::type * = nullptr> | |
size_type | count (const K &key, std::size_t precalculated_hash) const |
iterator | find (const Key &key) |
iterator | find (const Key &key, std::size_t precalculated_hash) |
const_iterator | find (const Key &key) const |
const_iterator | find (const Key &key, std::size_t precalculated_hash) const |
template<class K , class KE = KeyEqual, class CP = Compare, typename std::enable_if< has_is_transparent< KE >::value &&has_is_transparent< CP >::value >::type * = nullptr> | |
iterator | find (const K &key) |
template<class K , class KE = KeyEqual, class CP = Compare, typename std::enable_if< has_is_transparent< KE >::value &&has_is_transparent< CP >::value >::type * = nullptr> | |
iterator | find (const K &key, std::size_t precalculated_hash) |
template<class K , class KE = KeyEqual, class CP = Compare, typename std::enable_if< has_is_transparent< KE >::value &&has_is_transparent< CP >::value >::type * = nullptr> | |
const_iterator | find (const K &key) const |
template<class K , class KE = KeyEqual, class CP = Compare, typename std::enable_if< has_is_transparent< KE >::value &&has_is_transparent< CP >::value >::type * = nullptr> | |
const_iterator | find (const K &key, std::size_t precalculated_hash) const |
std::pair< iterator, iterator > | equal_range (const Key &key) |
std::pair< iterator, iterator > | equal_range (const Key &key, std::size_t precalculated_hash) |
std::pair< const_iterator, const_iterator > | equal_range (const Key &key) const |
std::pair< const_iterator, const_iterator > | equal_range (const Key &key, std::size_t precalculated_hash) const |
template<class K , class KE = KeyEqual, class CP = Compare, typename std::enable_if< has_is_transparent< KE >::value &&has_is_transparent< CP >::value >::type * = nullptr> | |
std::pair< iterator, iterator > | equal_range (const K &key) |
template<class K , class KE = KeyEqual, class CP = Compare, typename std::enable_if< has_is_transparent< KE >::value &&has_is_transparent< CP >::value >::type * = nullptr> | |
std::pair< iterator, iterator > | equal_range (const K &key, std::size_t precalculated_hash) |
template<class K , class KE = KeyEqual, class CP = Compare, typename std::enable_if< has_is_transparent< KE >::value &&has_is_transparent< CP >::value >::type * = nullptr> | |
std::pair< const_iterator, const_iterator > | equal_range (const K &key) const |
template<class K , class KE = KeyEqual, class CP = Compare, typename std::enable_if< has_is_transparent< KE >::value &&has_is_transparent< CP >::value >::type * = nullptr> | |
std::pair< const_iterator, const_iterator > | equal_range (const K &key, std::size_t precalculated_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 |
key_compare | key_comp () const |
iterator | mutable_iterator (const_iterator pos) |
size_type | overflow_size () const noexcept |
Private Types | |
template<typename U > | |
using | has_is_transparent = tsl::detail_hopscotch_hash::has_is_transparent< U > |
using | overflow_container_type = std::map< Key, T, Compare, Allocator > |
using | ht = detail_hopscotch_hash::hopscotch_hash< std::pair< const Key, T >, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, NeighborhoodSize, StoreHash, GrowthPolicy, overflow_container_type > |
Private Attributes | |
ht | m_ht |
Friends | |
bool | operator== (const hopscotch_sc_map &lhs, const hopscotch_sc_map &rhs) |
bool | operator!= (const hopscotch_sc_map &lhs, const hopscotch_sc_map &rhs) |
void | swap (hopscotch_sc_map &lhs, hopscotch_sc_map &rhs) |
using tsl::hopscotch_sc_map< Key, T, Hash, KeyEqual, Compare, Allocator, NeighborhoodSize, StoreHash, GrowthPolicy >::allocator_type = typename ht::allocator_type |
Definition at line 115 of file hopscotch_sc_map.h.
using tsl::hopscotch_sc_map< Key, T, Hash, KeyEqual, Compare, Allocator, NeighborhoodSize, StoreHash, GrowthPolicy >::const_iterator = typename ht::const_iterator |
Definition at line 121 of file hopscotch_sc_map.h.
using tsl::hopscotch_sc_map< Key, T, Hash, KeyEqual, Compare, Allocator, NeighborhoodSize, StoreHash, GrowthPolicy >::const_pointer = typename ht::const_pointer |
Definition at line 119 of file hopscotch_sc_map.h.
using tsl::hopscotch_sc_map< Key, T, Hash, KeyEqual, Compare, Allocator, NeighborhoodSize, StoreHash, GrowthPolicy >::const_reference = typename ht::const_reference |
Definition at line 117 of file hopscotch_sc_map.h.
using tsl::hopscotch_sc_map< Key, T, Hash, KeyEqual, Compare, Allocator, NeighborhoodSize, StoreHash, GrowthPolicy >::difference_type = typename ht::difference_type |
Definition at line 111 of file hopscotch_sc_map.h.
|
private |
Definition at line 68 of file hopscotch_sc_map.h.
using tsl::hopscotch_sc_map< Key, T, Hash, KeyEqual, Compare, Allocator, NeighborhoodSize, StoreHash, GrowthPolicy >::hasher = typename ht::hasher |
Definition at line 112 of file hopscotch_sc_map.h.
|
private |
Definition at line 100 of file hopscotch_sc_map.h.
using tsl::hopscotch_sc_map< Key, T, Hash, KeyEqual, Compare, Allocator, NeighborhoodSize, StoreHash, GrowthPolicy >::iterator = typename ht::iterator |
Definition at line 120 of file hopscotch_sc_map.h.
using tsl::hopscotch_sc_map< Key, T, Hash, KeyEqual, Compare, Allocator, NeighborhoodSize, StoreHash, GrowthPolicy >::key_compare = Compare |
Definition at line 114 of file hopscotch_sc_map.h.
using tsl::hopscotch_sc_map< Key, T, Hash, KeyEqual, Compare, Allocator, NeighborhoodSize, StoreHash, GrowthPolicy >::key_equal = typename ht::key_equal |
Definition at line 113 of file hopscotch_sc_map.h.
using tsl::hopscotch_sc_map< Key, T, Hash, KeyEqual, Compare, Allocator, NeighborhoodSize, StoreHash, GrowthPolicy >::key_type = typename ht::key_type |
Definition at line 107 of file hopscotch_sc_map.h.
using tsl::hopscotch_sc_map< Key, T, Hash, KeyEqual, Compare, Allocator, NeighborhoodSize, StoreHash, GrowthPolicy >::mapped_type = T |
Definition at line 108 of file hopscotch_sc_map.h.
|
private |
Definition at line 99 of file hopscotch_sc_map.h.
using tsl::hopscotch_sc_map< Key, T, Hash, KeyEqual, Compare, Allocator, NeighborhoodSize, StoreHash, GrowthPolicy >::pointer = typename ht::pointer |
Definition at line 118 of file hopscotch_sc_map.h.
using tsl::hopscotch_sc_map< Key, T, Hash, KeyEqual, Compare, Allocator, NeighborhoodSize, StoreHash, GrowthPolicy >::reference = typename ht::reference |
Definition at line 116 of file hopscotch_sc_map.h.
using tsl::hopscotch_sc_map< Key, T, Hash, KeyEqual, Compare, Allocator, NeighborhoodSize, StoreHash, GrowthPolicy >::size_type = typename ht::size_type |
Definition at line 110 of file hopscotch_sc_map.h.
using tsl::hopscotch_sc_map< Key, T, Hash, KeyEqual, Compare, Allocator, NeighborhoodSize, StoreHash, GrowthPolicy >::value_type = typename ht::value_type |
Definition at line 109 of file hopscotch_sc_map.h.
|
inline |
Definition at line 127 of file hopscotch_sc_map.h.
|
inlineexplicit |
Definition at line 130 of file hopscotch_sc_map.h.
|
inline |
Definition at line 139 of file hopscotch_sc_map.h.
|
inline |
Definition at line 144 of file hopscotch_sc_map.h.
|
inlineexplicit |
Definition at line 150 of file hopscotch_sc_map.h.
|
inline |
Definition at line 154 of file hopscotch_sc_map.h.
|
inline |
Definition at line 164 of file hopscotch_sc_map.h.
|
inline |
Definition at line 171 of file hopscotch_sc_map.h.
|
inline |
Definition at line 178 of file hopscotch_sc_map.h.
|
inline |
Definition at line 187 of file hopscotch_sc_map.h.
|
inline |
Definition at line 194 of file hopscotch_sc_map.h.
|
inline |
This overload only participates in the overload resolution if the typedef KeyEqual::is_transparent and Compare::is_transparent exist. If so, K must be hashable and comparable to Key.
Definition at line 417 of file hopscotch_sc_map.h.
|
inline |
This overload only participates in the overload resolution if the typedef KeyEqual::is_transparent and Compare::is_transparent exist. If so, K must be hashable and comparable to Key.
Definition at line 434 of file hopscotch_sc_map.h.
|
inline |
This overload only participates in the overload resolution if the typedef KeyEqual::is_transparent and Compare::is_transparent exist. If so, K must be hashable and comparable to Key.
Use the hash value 'precalculated_hash' instead of hashing the key. The hash value should be the same as hash_function()(key). Usefull to speed-up the lookup if you already have the hash.
Definition at line 427 of file hopscotch_sc_map.h.
|
inline |
This overload only participates in the overload resolution if the typedef KeyEqual::is_transparent and Compare::is_transparent exist. If so, K must be hashable and comparable to Key.
Use the hash value 'precalculated_hash' instead of hashing the key. The hash value should be the same as hash_function()(key). Usefull to speed-up the lookup if you already have the hash.
Definition at line 441 of file hopscotch_sc_map.h.
|
inline |
Definition at line 395 of file hopscotch_sc_map.h.
|
inline |
Definition at line 403 of file hopscotch_sc_map.h.
|
inline |
Use the hash value 'precalculated_hash' instead of hashing the key. The hash value should be the same as hash_function()(key). Usefull to speed-up the lookup if you already have the hash.
Definition at line 401 of file hopscotch_sc_map.h.
|
inline |
Use the hash value 'precalculated_hash' instead of hashing the key. The hash value should be the same as hash_function()(key). Usefull to speed-up the lookup if you already have the hash.
Definition at line 408 of file hopscotch_sc_map.h.
|
inlinenoexcept |
Definition at line 219 of file hopscotch_sc_map.h.
|
inlinenoexcept |
Definition at line 218 of file hopscotch_sc_map.h.
|
inline |
Definition at line 595 of file hopscotch_sc_map.h.
|
inlinenoexcept |
Definition at line 220 of file hopscotch_sc_map.h.
|
inlinenoexcept |
Definition at line 224 of file hopscotch_sc_map.h.
|
inlinenoexcept |
Definition at line 237 of file hopscotch_sc_map.h.
|
inline |
This overload only participates in the overload resolution if the typedef KeyEqual::is_transparent and Compare::is_transparent exist. If so, K must be hashable and comparable to Key.
Definition at line 467 of file hopscotch_sc_map.h.
|
inline |
This overload only participates in the overload resolution if the typedef KeyEqual::is_transparent and Compare::is_transparent exist. If so, K must be hashable and comparable to Key.
Use the hash value 'precalculated_hash' instead of hashing the key. The hash value should be the same as hash_function()(key). Usefull to speed-up the lookup if you already have the hash.
Definition at line 477 of file hopscotch_sc_map.h.
|
inline |
Definition at line 452 of file hopscotch_sc_map.h.
|
inline |
Use the hash value 'precalculated_hash' instead of hashing the key. The hash value should be the same as hash_function()(key). Usefull to speed-up the lookup if you already have the hash.
Definition at line 458 of file hopscotch_sc_map.h.
|
inline |
Due to the way elements are stored, emplace will need to move or copy the key-value once. The method is equivalent to insert(value_type(std::forward<Args>(args)...));
Mainly here for compatibility with the std::unordered_map interface.
Definition at line 311 of file hopscotch_sc_map.h.
|
inline |
Due to the way elements are stored, emplace_hint will need to move or copy the key-value once. The method is equivalent to insert(hint, value_type(std::forward<Args>(args)...));
Mainly here for compatibility with the std::unordered_map interface.
Definition at line 325 of file hopscotch_sc_map.h.
|
inlinenoexcept |
Definition at line 230 of file hopscotch_sc_map.h.
|
inlinenoexcept |
Definition at line 223 of file hopscotch_sc_map.h.
|
inlinenoexcept |
Definition at line 222 of file hopscotch_sc_map.h.
|
inline |
This overload only participates in the overload resolution if the typedef KeyEqual::is_transparent and Compare::is_transparent exist. If so, K must be hashable and comparable to Key.
Definition at line 559 of file hopscotch_sc_map.h.
|
inline |
This overload only participates in the overload resolution if the typedef KeyEqual::is_transparent and Compare::is_transparent exist. If so, K must be hashable and comparable to Key.
Definition at line 578 of file hopscotch_sc_map.h.
|
inline |
This overload only participates in the overload resolution if the typedef KeyEqual::is_transparent and Compare::is_transparent exist. If so, K must be hashable and comparable to Key.
Use the hash value 'precalculated_hash' instead of hashing the key. The hash value should be the same as hash_function()(key). Usefull to speed-up the lookup if you already have the hash.
Definition at line 569 of file hopscotch_sc_map.h.
|
inline |
This overload only participates in the overload resolution if the typedef KeyEqual::is_transparent and Compare::is_transparent exist. If so, K must be hashable and comparable to Key.
Use the hash value 'precalculated_hash' instead of hashing the key. The hash value should be the same as hash_function()(key). Usefull to speed-up the lookup if you already have the hash.
Definition at line 585 of file hopscotch_sc_map.h.
|
inline |
Definition at line 533 of file hopscotch_sc_map.h.
|
inline |
Definition at line 543 of file hopscotch_sc_map.h.
|
inline |
Use the hash value 'precalculated_hash' instead of hashing the key. The hash value should be the same as hash_function()(key). Usefull to speed-up the lookup if you already have the hash.
Definition at line 539 of file hopscotch_sc_map.h.
|
inline |
Use the hash value 'precalculated_hash' instead of hashing the key. The hash value should be the same as hash_function()(key). Usefull to speed-up the lookup if you already have the hash.
Definition at line 548 of file hopscotch_sc_map.h.
|
inline |
This overload only participates in the overload resolution if the typedef KeyEqual::is_transparent and Compare::is_transparent exist. If so, K must be hashable and comparable to Key.
Definition at line 375 of file hopscotch_sc_map.h.
|
inline |
This overload only participates in the overload resolution if the typedef KeyEqual::is_transparent and Compare::is_transparent exist. If so, K must be hashable and comparable to Key.
Use the hash value 'precalculated_hash' instead of hashing the key. The hash value should be the same as hash_function()(key). Usefull to speed-up the lookup to the value if you already have the hash.
Definition at line 385 of file hopscotch_sc_map.h.
|
inline |
Definition at line 358 of file hopscotch_sc_map.h.
|
inline |
Use the hash value 'precalculated_hash' instead of hashing the key. The hash value should be the same as hash_function()(key). Usefull to speed-up the lookup to the value if you already have the hash.
Definition at line 364 of file hopscotch_sc_map.h.
|
inline |
Definition at line 357 of file hopscotch_sc_map.h.
|
inline |
Definition at line 356 of file hopscotch_sc_map.h.
|
inline |
Definition at line 355 of file hopscotch_sc_map.h.
|
inline |
This overload only participates in the overload resolution if the typedef KeyEqual::is_transparent and Compare::is_transparent exist. If so, K must be hashable and comparable to Key.
Definition at line 504 of file hopscotch_sc_map.h.
|
inline |
This overload only participates in the overload resolution if the typedef KeyEqual::is_transparent and Compare::is_transparent exist. If so, K must be hashable and comparable to Key.
Definition at line 521 of file hopscotch_sc_map.h.
|
inline |
This overload only participates in the overload resolution if the typedef KeyEqual::is_transparent and Compare::is_transparent exist. If so, K must be hashable and comparable to Key.
Use the hash value 'precalculated_hash' instead of hashing the key. The hash value should be the same as hash_function()(key). Usefull to speed-up the lookup if you already have the hash.
Definition at line 514 of file hopscotch_sc_map.h.
|
inline |
This overload only participates in the overload resolution if the typedef KeyEqual::is_transparent and Compare::is_transparent exist. If so, K must be hashable and comparable to Key.
Use the hash value 'precalculated_hash' instead of hashing the key. The hash value should be the same as hash_function()(key). Usefull to speed-up the lookup if you already have the hash.
Definition at line 528 of file hopscotch_sc_map.h.
|
inline |
Definition at line 482 of file hopscotch_sc_map.h.
|
inline |
Definition at line 490 of file hopscotch_sc_map.h.
|
inline |
Use the hash value 'precalculated_hash' instead of hashing the key. The hash value should be the same as hash_function()(key). Usefull to speed-up the lookup if you already have the hash.
Definition at line 488 of file hopscotch_sc_map.h.
|
inline |
Use the hash value 'precalculated_hash' instead of hashing the key. The hash value should be the same as hash_function()(key). Usefull to speed-up the lookup if you already have the hash.
Definition at line 495 of file hopscotch_sc_map.h.
|
inline |
Definition at line 212 of file hopscotch_sc_map.h.
|
inline |
Definition at line 613 of file hopscotch_sc_map.h.
|
inline |
Definition at line 242 of file hopscotch_sc_map.h.
|
inline |
Definition at line 256 of file hopscotch_sc_map.h.
|
inline |
Definition at line 261 of file hopscotch_sc_map.h.
|
inline |
Definition at line 265 of file hopscotch_sc_map.h.
|
inline |
Definition at line 271 of file hopscotch_sc_map.h.
|
inline |
Definition at line 247 of file hopscotch_sc_map.h.
|
inline |
Definition at line 275 of file hopscotch_sc_map.h.
|
inline |
Definition at line 251 of file hopscotch_sc_map.h.
|
inline |
Definition at line 283 of file hopscotch_sc_map.h.
|
inline |
Definition at line 293 of file hopscotch_sc_map.h.
|
inline |
Definition at line 298 of file hopscotch_sc_map.h.
|
inline |
Definition at line 288 of file hopscotch_sc_map.h.
|
inline |
Definition at line 615 of file hopscotch_sc_map.h.
|
inline |
Definition at line 614 of file hopscotch_sc_map.h.
|
inline |
Definition at line 602 of file hopscotch_sc_map.h.
|
inline |
Definition at line 596 of file hopscotch_sc_map.h.
|
inline |
Definition at line 603 of file hopscotch_sc_map.h.
|
inline |
Definition at line 604 of file hopscotch_sc_map.h.
|
inlinenoexcept |
Definition at line 232 of file hopscotch_sc_map.h.
|
inline |
Convert a const_iterator to an iterator.
Definition at line 624 of file hopscotch_sc_map.h.
|
inline |
Definition at line 203 of file hopscotch_sc_map.h.
|
inline |
Definition at line 446 of file hopscotch_sc_map.h.
|
inline |
Definition at line 447 of file hopscotch_sc_map.h.
|
inlinenoexcept |
Definition at line 628 of file hopscotch_sc_map.h.
|
inline |
Definition at line 606 of file hopscotch_sc_map.h.
|
inline |
Definition at line 607 of file hopscotch_sc_map.h.
|
inlinenoexcept |
Definition at line 231 of file hopscotch_sc_map.h.
|
inline |
Definition at line 390 of file hopscotch_sc_map.h.
|
inline |
Definition at line 333 of file hopscotch_sc_map.h.
|
inline |
Definition at line 343 of file hopscotch_sc_map.h.
|
inline |
Definition at line 348 of file hopscotch_sc_map.h.
|
inline |
Definition at line 338 of file hopscotch_sc_map.h.
|
friend |
Definition at line 645 of file hopscotch_sc_map.h.
|
friend |
Definition at line 630 of file hopscotch_sc_map.h.
|
friend |
Definition at line 649 of file hopscotch_sc_map.h.
|
private |
Definition at line 656 of file hopscotch_sc_map.h.