Implementation of std::unordered_map. Plus de détails...
#include <arcane/utils/HashTableMap2.h>
Classes | |
class | const_iterator |
class | iterator |
Types publics | |
using | htype = HashTableMap2< KeyT, ValueT, HashT, EqT > |
using | value_type = std::pair< KeyT, ValueT > |
using | key_type = KeyT |
using | mapped_type = ValueT |
using | hasher = HashT |
using | key_equal = EqT |
Types publics hérités de Arcane::impl::HashTableMap2Base | |
using | size_type = uint32_t |
Fonctions membres publiques | |
void | init (size_type bucket, float mlf=EMH_DEFAULT_LOAD_FACTOR) |
HashTableMap2 (size_type bucket=2, float mlf=EMH_DEFAULT_LOAD_FACTOR) | |
HashTableMap2 (const HashTableMap2 &rhs) | |
HashTableMap2 (HashTableMap2 &&rhs) noexcept | |
HashTableMap2 (std::initializer_list< value_type > ilist) | |
template<class InputIt > | |
HashTableMap2 (InputIt first, InputIt last, size_type bucket_count=4) | |
HashTableMap2 & | operator= (const HashTableMap2 &rhs) |
HashTableMap2 & | operator= (HashTableMap2 &&rhs) noexcept |
template<typename Con > | |
bool | operator== (const Con &rhs) const |
template<typename Con > | |
bool | operator!= (const Con &rhs) const |
void | clone (const HashTableMap2 &rhs) |
void | swap (HashTableMap2 &rhs) |
iterator | first () const |
iterator | last () const |
value_type & | front () |
const value_type & | front () const |
value_type & | back () |
const value_type & | back () const |
void | pop_front () |
void | pop_back () |
iterator | begin () |
const_iterator | cbegin () const |
const_iterator | begin () const |
iterator | end () |
const_iterator | cend () const |
const_iterator | end () const |
const value_type * | values () const |
const Index * | index () const |
size_type | size () const |
bool | empty () const |
size_type | bucket_count () const |
double | load_factor () const |
Returns average number of elements per bucket. | |
HashT & | hash_function () const |
EqT & | key_eq () const |
void | max_load_factor (double mlf) |
constexpr double | max_load_factor () const |
constexpr size_type | max_size () const |
constexpr size_type | max_bucket_count () const |
template<typename K = KeyT> | |
iterator | find (const K &key) noexcept |
template<typename K = KeyT> | |
const_iterator | find (const K &key) const noexcept |
template<typename K = KeyT> | |
ValueT & | at (const K &key) |
template<typename K = KeyT> | |
const ValueT & | at (const K &key) const |
const ValueT & | index (const uint32_t index) const |
ValueT & | index (const uint32_t index) |
template<typename K = KeyT> | |
bool | contains (const K &key) const noexcept |
template<typename K = KeyT> | |
size_type | count (const K &key) const noexcept |
template<typename K = KeyT> | |
std::pair< iterator, iterator > | equal_range (const K &key) |
void | merge (HashTableMap2 &rhs) |
std::pair< iterator, bool > | add (const KeyT &key, const ValueT &value) |
std::pair< iterator, bool > | insert (const value_type &p) |
std::pair< iterator, bool > | insert (value_type &&p) |
void | insert (std::initializer_list< value_type > ilist) |
template<typename Iter > | |
void | insert (Iter first, Iter last) |
template<class... Args> | |
std::pair< iterator, bool > | emplace (Args &&... args) noexcept |
template<class... Args> | |
iterator | emplace_hint (const_iterator hint, Args &&... args) |
template<class... Args> | |
std::pair< iterator, bool > | try_emplace (const KeyT &k, Args &&... args) |
template<class... Args> | |
std::pair< iterator, bool > | try_emplace (KeyT &&k, Args &&... args) |
template<class... Args> | |
size_type | emplace_unique (Args &&... args) |
std::pair< iterator, bool > | insert_or_assign (const KeyT &key, ValueT &&val) |
std::pair< iterator, bool > | insert_or_assign (KeyT &&key, ValueT &&val) |
ValueT | set_get (const KeyT &key, const ValueT &val) |
Return the old value or ValueT() if it didn't exist. | |
ValueT & | operator[] (const KeyT &key) noexcept |
Like std::map<KeyT, ValueT>::operator[]. | |
ValueT & | operator[] (KeyT &&key) noexcept |
size_type | erase (const KeyT &key) noexcept |
iterator | erase (const const_iterator &cit) noexcept |
iterator | erase (const_iterator first, const_iterator last) noexcept |
template<typename Pred > | |
size_type | erase_if (Pred pred) |
void | clear () noexcept |
Remove all elements, keeping full capacity. | |
void | shrink_to_fit (const float min_factor=EMH_DEFAULT_LOAD_FACTOR/4) |
bool | reserve (uint64_t num_elems, bool force) |
Make room for this many elements. | |
bool | reserve (size_type required_buckets) noexcept |
void | rehash (uint64_t required_buckets) |
Fonctions membres publiques statiques | |
static constexpr bool | is_triviall_destructable () |
static constexpr bool | is_copy_trivially () |
Attributs publics statiques | |
static constexpr size_type | INACTIVE = 0xFFFFFFFF |
static constexpr size_type | END = 0xFFFFFFFF |
Fonctions membres privées statiques | |
static void | prefetch_heap_block (char *ctrl) |
Attributs privés | |
value_type * | m_pairs = nullptr |
HashT | m_hasher |
EqT | m_eq |
Int64 | m_pairs_allocated_size = 0 |
Attributs privés statiques | |
static constexpr double | EMH_DEFAULT_LOAD_FACTOR = 0.80f |
static constexpr double | EMH_MIN_LOAD_FACTOR = 0.25f |
static constexpr uint32_t | EMH_CACHE_LINE_SIZE = 64 |
Membres hérités additionnels | |
Fonctions membres protégées hérités de Arcane::impl::HashTableMap2Base | |
void | _allocIndex (size_type num_buckets) |
void | _freeIndex () |
void | _doSwap (HashTableMap2Base &rhs) |
void | _doClone (const HashTableMap2Base &rhs) |
Attributs protégés hérités de Arcane::impl::HashTableMap2Base | |
Index * | m_index = nullptr |
uint32_t | m_mlf = 0 |
size_type | m_mask = 0 |
size_type | m_num_buckets = 0 |
size_type | m_num_filled = 0 |
size_type | m_last = 0 |
size_type | m_etail = 0 |
IMemoryAllocator * | m_memory_allocator = _defaultAllocator() |
Attributs protégés statiques hérités de Arcane::impl::HashTableMap2Base | |
static constexpr size_type | EAD = 2 |
Implementation of std::unordered_map.
Définition à la ligne 165 du fichier HashTableMap2.h.
using Arcane::impl::HashTableMap2< KeyT, ValueT, HashT, EqT >::hasher = HashT |
Définition à la ligne 178 du fichier HashTableMap2.h.
using Arcane::impl::HashTableMap2< KeyT, ValueT, HashT, EqT >::htype = HashTableMap2<KeyT, ValueT, HashT, EqT> |
Définition à la ligne 174 du fichier HashTableMap2.h.
using Arcane::impl::HashTableMap2< KeyT, ValueT, HashT, EqT >::key_equal = EqT |
Définition à la ligne 179 du fichier HashTableMap2.h.
using Arcane::impl::HashTableMap2< KeyT, ValueT, HashT, EqT >::key_type = KeyT |
Définition à la ligne 176 du fichier HashTableMap2.h.
using Arcane::impl::HashTableMap2< KeyT, ValueT, HashT, EqT >::mapped_type = ValueT |
Définition à la ligne 177 du fichier HashTableMap2.h.
using Arcane::impl::HashTableMap2< KeyT, ValueT, HashT, EqT >::value_type = std::pair<KeyT, ValueT> |
Définition à la ligne 175 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 321 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 326 du fichier HashTableMap2.h.
|
inlinenoexcept |
Définition à la ligne 340 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 346 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 354 du fichier HashTableMap2.h.
|
inlinenoexcept |
Définition à la ligne 417 du fichier HashTableMap2.h.
|
inlineprivate |
Définition à la ligne 1471 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Définition à la ligne 1028 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Définition à la ligne 1055 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Définition à la ligne 1041 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Définition à la ligne 1360 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Définition à la ligne 1285 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Définition à la ligne 1328 du fichier HashTableMap2.h.
|
inlineprivate |
Définition à la ligne 1478 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 651 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 585 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 593 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 468 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 472 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 486 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 494 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 529 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 490 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 503 du fichier HashTableMap2.h.
|
inlineprivate |
Définition à la ligne 1107 du fichier HashTableMap2.h.
|
inlinenoexcept |
Remove all elements, keeping full capacity.
Définition à la ligne 850 du fichier HashTableMap2.h.
|
inlineprivate |
Définition à la ligne 937 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 424 du fichier HashTableMap2.h.
|
inlinenoexcept |
Définition à la ligne 611 du fichier HashTableMap2.h.
|
inlinenoexcept |
Définition à la ligne 617 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Définition à la ligne 1069 du fichier HashTableMap2.h.
|
inlinenoexcept |
Définition à la ligne 684 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 692 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 714 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 525 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 499 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 507 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 623 du fichier HashTableMap2.h.
|
inlinenoexcept |
Définition à la ligne 789 du fichier HashTableMap2.h.
|
inlinenoexcept |
Erase an element from the hash table. return 0 if element was not found
Définition à la ligne 776 du fichier HashTableMap2.h.
|
inlinenoexcept |
Définition à la ligne 799 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Définition à la ligne 1153 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 819 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Définition à la ligne 1132 du fichier HashTableMap2.h.
|
inlinenoexcept |
Définition à la ligne 579 du fichier HashTableMap2.h.
|
inlinenoexcept |
Définition à la ligne 573 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Définition à la ligne 1191 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Définition à la ligne 1225 du fichier HashTableMap2.h.
|
inlineprivate |
Définition à la ligne 1403 du fichier HashTableMap2.h.
|
inlineprivate |
Définition à la ligne 1417 du fichier HashTableMap2.h.
|
inlineprivate |
Définition à la ligne 1173 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 451 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 460 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 464 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Convenience function.
Définition à la ligne 1021 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Définition à la ligne 1431 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 540 du fichier HashTableMap2.h.
|
inlineprivate |
Définition à la ligne 1451 du fichier HashTableMap2.h.
|
inlineprivate |
Définition à la ligne 1457 du fichier HashTableMap2.h.
|
inlineprivate |
Définition à la ligne 1445 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Définition à la ligne 1436 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 516 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 605 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 600 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 310 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 656 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 676 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 668 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 662 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 719 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 723 du fichier HashTableMap2.h.
|
inlineprivate |
Définition à la ligne 1101 du fichier HashTableMap2.h.
|
inlineprivate |
Définition à la ligne 1087 du fichier HashTableMap2.h.
|
inlineprivate |
Définition à la ligne 1096 du fichier HashTableMap2.h.
|
inlinestaticconstexpr |
Définition à la ligne 840 du fichier HashTableMap2.h.
|
inlinestaticconstexpr |
Définition à la ligne 831 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 544 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Définition à la ligne 1262 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 455 du fichier HashTableMap2.h.
|
inline |
Returns average number of elements per bucket.
Définition à la ligne 535 du fichier HashTableMap2.h.
|
inlineconstexpr |
Définition à la ligne 566 du fichier HashTableMap2.h.
|
inlineconstexpr |
Définition à la ligne 558 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 549 du fichier HashTableMap2.h.
|
inlineconstexpr |
Définition à la ligne 562 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 632 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 412 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 361 du fichier HashTableMap2.h.
|
inlinenoexcept |
Définition à la ligne 388 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 398 du fichier HashTableMap2.h.
|
inlinenoexcept |
Like std::map<KeyT, ValueT>::operator[].
Définition à la ligne 747 du fichier HashTableMap2.h.
|
inlinenoexcept |
Définition à la ligne 761 du fichier HashTableMap2.h.
|
inlineprivate |
Définition à la ligne 968 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 481 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 477 du fichier HashTableMap2.h.
|
inlinestaticprivate |
Définition à la ligne 1112 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Définition à la ligne 945 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 905 du fichier HashTableMap2.h.
|
inlinenoexcept |
Définition à la ligne 882 du fichier HashTableMap2.h.
|
inline |
Make room for this many elements.
Définition à la ligne 870 du fichier HashTableMap2.h.
|
inline |
Return the old value or ValueT() if it didn't exist.
Définition à la ligne 729 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 862 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 521 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Définition à la ligne 1125 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 442 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 700 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 707 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Const version of the above.
Définition à la ligne 992 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Returns the matching ValueT or nullptr if k isn't found.
Définition à la ligne 985 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
Returns the matching ValueT or nullptr if k isn't found.
Définition à la ligne 974 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
set value if key exist
Définition à la ligne 999 du fichier HashTableMap2.h.
|
inlineprivatenoexcept |
set value if key exist
Définition à la ligne 1010 du fichier HashTableMap2.h.
|
inline |
Définition à la ligne 512 du fichier HashTableMap2.h.
|
staticconstexprprivate |
Définition à la ligne 170 du fichier HashTableMap2.h.
|
staticconstexprprivate |
Définition à la ligne 168 du fichier HashTableMap2.h.
|
staticconstexprprivate |
Définition à la ligne 169 du fichier HashTableMap2.h.
|
staticconstexpr |
Définition à la ligne 182 du fichier HashTableMap2.h.
|
staticconstexpr |
Définition à la ligne 181 du fichier HashTableMap2.h.
|
private |
Définition à la ligne 1466 du fichier HashTableMap2.h.
|
private |
Définition à la ligne 1465 du fichier HashTableMap2.h.
|
private |
Définition à la ligne 1464 du fichier HashTableMap2.h.
|
private |
Définition à la ligne 1467 du fichier HashTableMap2.h.