NIM 跨平台 C++ SDK
|
#include <phmap.h>
类 | |
class | const_iterator |
struct | EmplaceDecomposable |
struct | EmplaceDecomposableHashval |
struct | EqualElement |
struct | FindElement |
struct | HashElement |
struct | Inner |
class | iterator |
struct | ReturnKey_ |
struct | SameAsElementReference |
Public 类型 | |
using | EmbeddedSet = RefSet< Policy, Hash, Eq, Alloc > |
using | EmbeddedIterator = typename EmbeddedSet::iterator |
using | EmbeddedConstIterator = typename EmbeddedSet::const_iterator |
using | constructor = typename EmbeddedSet::constructor |
using | init_type = typename PolicyTraits::init_type |
using | key_type = typename PolicyTraits::key_type |
using | slot_type = typename PolicyTraits::slot_type |
using | allocator_type = Alloc |
using | size_type = size_t |
using | difference_type = ptrdiff_t |
using | hasher = Hash |
using | key_equal = Eq |
using | policy_type = Policy |
using | value_type = typename PolicyTraits::value_type |
using | reference = value_type & |
using | const_reference = const value_type & |
using | pointer = typename phmap::allocator_traits< allocator_type >::template rebind_traits< value_type >::pointer |
using | const_pointer = typename phmap::allocator_traits< allocator_type >::template rebind_traits< value_type >::const_pointer |
template<class K > | |
using | key_arg = typename KeyArgImpl::template type< K, key_type > |
using | node_type = node_handle< Policy, hash_policy_traits< Policy >, Alloc > |
using | insert_return_type = InsertReturnType< iterator, node_type > |
Public 成员函数 | |
parallel_hash_set () noexcept(std::is_nothrow_default_constructible< hasher >::value &&std::is_nothrow_default_constructible< key_equal >::value &&std::is_nothrow_default_constructible< allocator_type >::value) | |
parallel_hash_set (size_t bucket_cnt, const hasher &hash_param=hasher(), const key_equal &eq=key_equal(), const allocator_type &alloc=allocator_type()) | |
parallel_hash_set (size_t bucket_cnt, const hasher &hash_param, const allocator_type &alloc) | |
parallel_hash_set (size_t bucket_cnt, const allocator_type &alloc) | |
parallel_hash_set (const allocator_type &alloc) | |
template<class InputIter > | |
parallel_hash_set (InputIter first, InputIter last, size_t bucket_cnt=0, const hasher &hash_param=hasher(), const key_equal &eq=key_equal(), const allocator_type &alloc=allocator_type()) | |
template<class InputIter > | |
parallel_hash_set (InputIter first, InputIter last, size_t bucket_cnt, const hasher &hash_param, const allocator_type &alloc) | |
template<class InputIter > | |
parallel_hash_set (InputIter first, InputIter last, size_t bucket_cnt, const allocator_type &alloc) | |
template<class InputIter > | |
parallel_hash_set (InputIter first, InputIter last, const allocator_type &alloc) | |
template<class T , RequiresNotInit< T > = 0, RequiresInsertable< T > = 0> | |
parallel_hash_set (std::initializer_list< T > init, size_t bucket_cnt=0, const hasher &hash_param=hasher(), const key_equal &eq=key_equal(), const allocator_type &alloc=allocator_type()) | |
parallel_hash_set (std::initializer_list< init_type > init, size_t bucket_cnt=0, const hasher &hash_param=hasher(), const key_equal &eq=key_equal(), const allocator_type &alloc=allocator_type()) | |
template<class T , RequiresNotInit< T > = 0, RequiresInsertable< T > = 0> | |
parallel_hash_set (std::initializer_list< T > init, size_t bucket_cnt, const hasher &hash_param, const allocator_type &alloc) | |
parallel_hash_set (std::initializer_list< init_type > init, size_t bucket_cnt, const hasher &hash_param, const allocator_type &alloc) | |
template<class T , RequiresNotInit< T > = 0, RequiresInsertable< T > = 0> | |
parallel_hash_set (std::initializer_list< T > init, size_t bucket_cnt, const allocator_type &alloc) | |
parallel_hash_set (std::initializer_list< init_type > init, size_t bucket_cnt, const allocator_type &alloc) | |
template<class T , RequiresNotInit< T > = 0, RequiresInsertable< T > = 0> | |
parallel_hash_set (std::initializer_list< T > init, const allocator_type &alloc) | |
parallel_hash_set (std::initializer_list< init_type > init, const allocator_type &alloc) | |
parallel_hash_set (const parallel_hash_set &that) | |
parallel_hash_set (const parallel_hash_set &that, const allocator_type &a) | |
parallel_hash_set (parallel_hash_set &&that) noexcept(std::is_nothrow_copy_constructible< hasher >::value &&std::is_nothrow_copy_constructible< key_equal >::value &&std::is_nothrow_copy_constructible< allocator_type >::value) | |
parallel_hash_set (parallel_hash_set &&that, const allocator_type &a) | |
parallel_hash_set & | operator= (const parallel_hash_set &that) |
parallel_hash_set & | operator= (parallel_hash_set &&that) noexcept(phmap::allocator_traits< allocator_type >::is_always_equal::value &&std::is_nothrow_move_assignable< hasher >::value &&std::is_nothrow_move_assignable< key_equal >::value) |
~parallel_hash_set () | |
iterator | begin () |
iterator | end () |
const_iterator | begin () const |
const_iterator | end () const |
const_iterator | cbegin () const |
const_iterator | cend () const |
bool | empty () const |
size_t | size () const |
size_t | capacity () const |
size_t | max_size () const |
PHMAP_ATTRIBUTE_REINITIALIZES void | clear () |
void | clear (std::size_t submap_index) |
template<class T , RequiresInsertable< T > = 0, typename std::enable_if< IsDecomposable< T >::value, int >::type = 0, T * = nullptr> | |
std::pair< iterator, bool > | insert (T &&value) |
template<class T , RequiresInsertable< T > = 0, typename std::enable_if< IsDecomposable< const T & >::value, int >::type = 0> | |
std::pair< iterator, bool > | insert (const T &value) |
std::pair< iterator, bool > | insert (init_type &&value) |
template<class T , RequiresInsertable< T > = 0, typename std::enable_if< IsDecomposable< T >::value, int >::type = 0, T * = nullptr> | |
iterator | insert (const_iterator, T &&value) |
template<class T , RequiresInsertable< T > = 0, typename std::enable_if< IsDecomposable< const T & >::value, int >::type = 0> | |
iterator | insert (const_iterator, const T &value) |
iterator | insert (const_iterator, init_type &&value) |
template<class InputIt > | |
void | insert (InputIt first, InputIt last) |
template<class T , RequiresNotInit< T > = 0, RequiresInsertable< const T & > = 0> | |
void | insert (std::initializer_list< T > ilist) |
void | insert (std::initializer_list< init_type > ilist) |
insert_return_type | insert (node_type &&node) |
iterator | insert (const_iterator, node_type &&node) |
template<class K , class... Args> | |
std::pair< iterator, bool > | emplace_decomposable_with_hash (const K &key, size_t hashval, Args &&... args) |
template<class... Args, typename std::enable_if< IsDecomposable< Args... >::value, int >::type = 0> | |
std::pair< iterator, bool > | emplace_with_hash (size_t hashval, Args &&... args) |
template<class... Args, typename std::enable_if< !IsDecomposable< Args... >::value, int >::type = 0> | |
std::pair< iterator, bool > | emplace_with_hash (size_t hashval, Args &&... args) |
template<class... Args> | |
iterator | emplace_hint_with_hash (size_t hashval, const_iterator, Args &&... args) |
template<class K = key_type, class F > | |
iterator | lazy_emplace_with_hash (const key_arg< K > &key, size_t hashval, F &&f) |
template<class K , class... Args> | |
std::pair< iterator, bool > | emplace_decomposable (const K &key, Args &&... args) |
template<class... Args, typename std::enable_if< IsDecomposable< Args... >::value, int >::type = 0> | |
std::pair< iterator, bool > | emplace (Args &&... args) |
template<class... Args, typename std::enable_if< !IsDecomposable< Args... >::value, int >::type = 0> | |
std::pair< iterator, bool > | emplace (Args &&... args) |
template<class... Args> | |
iterator | emplace_hint (const_iterator, Args &&... args) |
iterator | make_iterator (Inner *inner, const EmbeddedIterator it) |
std::pair< iterator, bool > | make_rv (Inner *inner, const std::pair< EmbeddedIterator, bool > &res) |
template<class K = key_type, class F > | |
iterator | lazy_emplace (const key_arg< K > &key, F &&f) |
template<class K = key_type, class F > | |
void | emplace_single_with_hash (const key_arg< K > &key, size_t hashval, F &&f) |
template<class K = key_type, class F > | |
void | emplace_single (const key_arg< K > &key, F &&f) |
template<class K = key_type, class F > | |
bool | if_contains (const key_arg< K > &key, F &&f) const |
template<class K = key_type, class F > | |
bool | if_contains_unsafe (const key_arg< K > &key, F &&f) const |
template<class K = key_type, class F > | |
bool | modify_if (const key_arg< K > &key, F &&f) |
template<class K = key_type, class F , class L > | |
bool | modify_if_impl (const key_arg< K > &key, F &&f) |
template<class K = key_type, class F > | |
bool | erase_if (const key_arg< K > &key, F &&f) |
template<class K = key_type, class F , class L > | |
bool | erase_if_impl (const key_arg< K > &key, F &&f) |
template<class K = key_type, class FExists , class FEmplace > | |
bool | lazy_emplace_l (const key_arg< K > &key, FExists &&fExists, FEmplace &&fEmplace) |
template<class F > | |
void | for_each (F &&fCallback) const |
template<class F > | |
void | for_each_m (F &&fCallback) |
template<class F > | |
void | with_submap (size_t idx, F &&fCallback) const |
template<class F > | |
void | with_submap_m (size_t idx, F &&fCallback) |
Inner & | get_inner (size_t idx) |
template<class K = key_type> | |
size_type | erase (const key_arg< K > &key) |
iterator | erase (const_iterator cit) |
void | _erase (iterator it) |
void | _erase (const_iterator cit) |
iterator | erase (iterator it) |
iterator | erase (const_iterator first, const_iterator last) |
template<typename E = Eq> | |
void | merge (parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, E, Alloc > &src) |
template<typename E = Eq> | |
void | merge (parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, E, Alloc > &&src) |
node_type | extract (const_iterator position) |
template<class K = key_type, typename std::enable_if<!std::is_same< K, iterator >::value, int >::type = 0> | |
node_type | extract (const key_arg< K > &key) |
template<class Mtx2_ > | |
void | swap (parallel_hash_set< N, RefSet, Mtx2_, Policy, Hash, Eq, Alloc > &that) noexcept(IsNoThrowSwappable< EmbeddedSet >() &&(!AllocTraits::propagate_on_container_swap::value||IsNoThrowSwappable< allocator_type >())) |
void | rehash (size_t n) |
void | reserve (size_t n) |
template<class K = key_type> | |
size_t | count (const key_arg< K > &key) const |
void | prefetch_hash (size_t hashval) const |
template<class K = key_type> | |
void | prefetch (const key_arg< K > &key) const |
template<class K = key_type> | |
iterator | find (const key_arg< K > &key, size_t hashval) |
template<class K = key_type> | |
iterator | find (const key_arg< K > &key) |
template<class K = key_type> | |
const_iterator | find (const key_arg< K > &key, size_t hashval) const |
template<class K = key_type> | |
const_iterator | find (const key_arg< K > &key) const |
template<class K = key_type> | |
bool | contains (const key_arg< K > &key) const |
template<class K = key_type> | |
bool | contains (const key_arg< K > &key, size_t hashval) const |
template<class K = key_type> | |
std::pair< iterator, iterator > | equal_range (const key_arg< K > &key) |
template<class K = key_type> | |
std::pair< const_iterator, const_iterator > | equal_range (const key_arg< K > &key) const |
size_t | bucket_count () const |
float | load_factor () const |
float | max_load_factor () const |
void | max_load_factor (float) |
hasher | hash_function () const |
key_equal | key_eq () const |
allocator_type | get_allocator () const |
template<class K > | |
size_t | hash (const K &key) const |
template<typename OutputArchive > | |
bool | phmap_dump (OutputArchive &ar) const |
template<typename InputArchive > | |
bool | phmap_load (InputArchive &ar) |
Protected 类型 | |
using | Lockable = phmap::LockableImpl< Mtx_ > |
Protected 成员函数 | |
template<class K = key_type, class L = typename Lockable::SharedLock> | |
pointer | find_ptr (const key_arg< K > &key, size_t hashval, L &mutexlock) |
template<class K = key_type, class L = typename Lockable::SharedLock> | |
iterator | find (const key_arg< K > &key, size_t hashval, L &mutexlock) |
template<class K > | |
std::tuple< Inner *, size_t, bool > | find_or_prepare_insert_with_hash (size_t hashval, const K &key, typename Lockable::UniqueLock &mutexlock) |
template<class K > | |
std::tuple< Inner *, size_t, bool > | find_or_prepare_insert (const K &key, typename Lockable::UniqueLock &mutexlock) |
iterator | iterator_at (Inner *inner, const EmbeddedIterator &it) |
const_iterator | iterator_at (Inner *inner, const EmbeddedIterator &it) const |
静态 Protected 成员函数 | |
static size_t | subidx (size_t hashval) |
static size_t | subcnt () |
Protected 属性 | |
std::array< Inner, num_tables > | sets_ |
Private 类型 | |
using | PolicyTraits = hash_policy_traits< Policy > |
using | KeyArgImpl = KeyArg< IsTransparent< Eq >::value &&IsTransparent< Hash >::value > |
using | AllocTraits = phmap::allocator_traits< allocator_type > |
template<class T > | |
using | RequiresInsertable = typename std::enable_if< phmap::disjunction< std::is_convertible< T, init_type >, SameAsElementReference< T > >::value, int >::type |
template<class T > | |
using | RequiresNotInit = typename std::enable_if<!std::is_same< T, init_type >::value, int >::type |
template<class... Ts> | |
using | IsDecomposable = IsDecomposable< void, PolicyTraits, Hash, Eq, Ts... > |
Private 成员函数 | |
auto | KeyTypeCanBeHashed (const Hash &h, const key_type &k) -> decltype(h(k)) |
auto | KeyTypeCanBeEq (const Eq &eq, const key_type &k) -> decltype(eq(k, k)) |
void | erase_meta_only (const_iterator cit) |
void | drop_deletes_without_resize () PHMAP_ATTRIBUTE_NOINLINE |
bool | has_element (const value_type &elem) const |
template<class Mtx2_ > | |
parallel_hash_set & | move_assign (parallel_hash_set< N, RefSet, Mtx2_, Policy, Hash, Eq, Alloc > &&that, std::true_type) |
template<class Mtx2_ > | |
parallel_hash_set & | move_assign (parallel_hash_set< N, RefSet, Mtx2_, Policy, Hash, Eq, Alloc > &&that, std::false_type) |
size_t | growth_left () |
hasher & | hash_ref () |
const hasher & | hash_ref () const |
key_equal & | eq_ref () |
const key_equal & | eq_ref () const |
allocator_type & | alloc_ref () |
const allocator_type & | alloc_ref () const |
静态 Private 属性 | |
static constexpr size_t | num_tables = 1 << N |
static constexpr size_t | mask = num_tables - 1 |
友元 | |
template<class Container , typename Enabler > | |
struct | phmap::priv::hashtable_debug_internal::HashtableDebugAccess |
struct | RawHashSetTestOnlyAccess |
bool | operator== (const parallel_hash_set &a, const parallel_hash_set &b) |
bool | operator!= (const parallel_hash_set &a, const parallel_hash_set &b) |
template<class Mtx2_ > | |
void | swap (parallel_hash_set &a, parallel_hash_set< N, RefSet, Mtx2_, Policy, Hash, Eq, Alloc > &b) noexcept(noexcept(a.swap(b))) |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::allocator_type = Alloc |
|
private |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::const_pointer = typename phmap::allocator_traits< allocator_type>::template rebind_traits<value_type>::const_pointer |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::const_reference = const value_type& |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::constructor = typename EmbeddedSet::constructor |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::difference_type = ptrdiff_t |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::EmbeddedConstIterator = typename EmbeddedSet::const_iterator |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::EmbeddedIterator = typename EmbeddedSet::iterator |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::EmbeddedSet = RefSet<Policy, Hash, Eq, Alloc> |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::hasher = Hash |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::init_type = typename PolicyTraits::init_type |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::insert_return_type = InsertReturnType<iterator, node_type> |
|
private |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::key_arg = typename KeyArgImpl::template type<K, key_type> |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::key_equal = Eq |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::key_type = typename PolicyTraits::key_type |
|
private |
|
protected |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::node_type = node_handle<Policy, hash_policy_traits<Policy>, Alloc> |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::pointer = typename phmap::allocator_traits< allocator_type>::template rebind_traits<value_type>::pointer |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::policy_type = Policy |
|
private |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::reference = value_type& |
|
private |
|
private |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::size_type = size_t |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::slot_type = typename PolicyTraits::slot_type |
using phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::value_type = typename PolicyTraits::value_type |
|
inlinenoexcept |
|
inlineexplicit |
|
inline |
|
inline |
|
inlineexplicit |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlinenoexcept |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprivate |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprivate |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprotected |
|
inlineprotected |
|
inline |
|
private |
|
private |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inlinenoexcept |
bool phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::phmap_dump | ( | OutputArchive & | ar | ) | const |
bool phmap::priv::parallel_hash_set< N, RefSet, Mtx_, Policy, Hash, Eq, Alloc >::phmap_load | ( | InputArchive & | ar | ) |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlinestaticprotected |
|
inlinestaticprotected |
|
inlinenoexcept |
|
inline |
|
inline |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
protected |