...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::intrusive::bucket_hash_equal_t
// In header: <boost/intrusive/hashtable.hpp> template<typename ValueTraits, typename VoidOrKeyOfValue, typename VoidOrKeyHash, typename VoidOrKeyEqual, typename BucketTraits, bool LinearBuckets, bool > struct bucket_hash_equal_t : public boost::intrusive::bucket_hash_t< ValueTraits, VoidOrKeyOfValue, VoidOrKeyHash, BucketTraits, LinearBuckets >, public hashtable_equal_holder::type< ValueTraits, BucketTraits, VoidOrKeyOfValue, VoidOrKeyEqual, LinearBuckets > { // types typedef hashtable_equal_holder< ValueTraits, BucketTraits, VoidOrKeyOfValue, VoidOrKeyEqual, LinearBuckets >::type equal_holder_t; typedef bucket_hash_t< ValueTraits, VoidOrKeyOfValue, VoidOrKeyHash, BucketTraits, LinearBuckets > bucket_hash_type; typedef bucket_plus_vtraits< ValueTraits, BucketTraits, LinearBuckets > bucket_plus_vtraits_t; typedef ValueTraits value_traits; typedef equal_holder_t::functor_type key_equal; typedef bucket_hash_type::hasher hasher; typedef BucketTraits bucket_traits; typedef bucket_plus_vtraits_t::siterator siterator; typedef bucket_plus_vtraits_t::const_siterator const_siterator; typedef bucket_plus_vtraits_t::bucket_type bucket_type; typedef bucket_plus_vtraits_t::slist_node_algorithms slist_node_algorithms; typedef unordered_bucket_ptr_impl< value_traits >::type bucket_ptr; // construct/copy/destruct bucket_hash_equal_t(const ValueTraits &, const bucket_traits &, const hasher &, const key_equal &); bucket_hash_equal_t(bucket_hash_equal_t &&); // public member functions bucket_ptr priv_get_cache(); void priv_set_cache(bucket_ptr); void priv_set_cache_bucket_num(std::size_t); std::size_t priv_get_cache_bucket_num(); void priv_init_cache(); void priv_swap_cache(bucket_hash_equal_t &); siterator priv_begin(bucket_ptr &) const; void priv_insertion_update_cache(std::size_t); void priv_erasure_update_cache_range(std::size_t, std::size_t); void priv_erasure_update_cache(bucket_ptr); void priv_erasure_update_cache(); const key_equal & priv_equal() const; key_equal & priv_equal(); };
bucket_hash_equal_t
public member functionsbucket_ptr priv_get_cache();
void priv_set_cache(bucket_ptr);
void priv_set_cache_bucket_num(std::size_t);
std::size_t priv_get_cache_bucket_num();
void priv_init_cache();
void priv_swap_cache(bucket_hash_equal_t &);
siterator priv_begin(bucket_ptr & pbucketptr) const;
void priv_insertion_update_cache(std::size_t);
void priv_erasure_update_cache_range(std::size_t, std::size_t);
void priv_erasure_update_cache(bucket_ptr);
void priv_erasure_update_cache();
const key_equal & priv_equal() const;
key_equal & priv_equal();