IOSS 2.0

Public Member Functions | Static Private Member Functions | Private Attributes | List of all members
tsl::hh::power_of_two_growth_policy< GrowthFactor > Class Template Reference

`#include <hopscotch_growth_policy.h>`

## Public Member Functions
| power_of_two_growth_policy (std::size_t &min_bucket_count_in_out)
std::size_t | bucket_for_hash (std::size_t hash) const noexcept
std::size_t | next_bucket_count () const
std::size_t | max_bucket_count () const
void | clear () noexcept

## Static Private Member Functions
static std::size_t | round_up_to_power_of_two (std::size_t value)
static constexpr bool | is_power_of_two (std::size_t value)

## Private Attributes
std::size_t | m_mask

## Detailed Description

### template<std::size_t GrowthFactor>
class tsl::hh::power_of_two_growth_policy< GrowthFactor >

Grow the hash table by a factor of GrowthFactor keeping the bucket count to a power of two. It allows the table to use a mask operation instead of a modulo operation to map a hash to a bucket.

GrowthFactor must be a power of two >= 2.

## Constructor & Destructor Documentation

## ◆ power_of_two_growth_policy()

template<std::size_t GrowthFactor>

tsl::hh::power_of_two_growth_policy< GrowthFactor >::power_of_two_growth_policy | ( | std::size_t & | min_bucket_count_in_out | ) |
| inlineexplicit

Called on the hash table creation and on rehash. The number of buckets for the table is passed in parameter. This number is a minimum, the policy may update this value with a higher value if needed (but not lower).

If 0 is given, min_bucket_count_in_out must still be 0 after the policy creation and bucket_for_hash must always return 0 in this case.

## Member Function Documentation

## ◆ bucket_for_hash()

template<std::size_t GrowthFactor>

std::size_t tsl::hh::power_of_two_growth_policy< GrowthFactor >::bucket_for_hash | ( | std::size_t | hash | ) | const
| inlinenoexcept

Return the bucket [0, bucket_count()) to which the hash belongs. If bucket_count() is 0, it must always return 0.

## ◆ clear()

template<std::size_t GrowthFactor>

void tsl::hh::power_of_two_growth_policy< GrowthFactor >::clear | ( |  | ) |
| inlinenoexcept

Reset the growth policy as if it was created with a bucket count of 0. After a clear, the policy must always return 0 when bucket_for_hash is called.

## ◆ is_power_of_two()

template<std::size_t GrowthFactor>

static constexpr bool tsl::hh::power_of_two_growth_policy< GrowthFactor >::is_power_of_two | ( | std::size_t | value | ) |
| inlinestaticconstexprprivate

## ◆ max_bucket_count()

template<std::size_t GrowthFactor>

std::size_t tsl::hh::power_of_two_growth_policy< GrowthFactor >::max_bucket_count | ( |  | ) | const
| inline

Return the maximum number of buckets supported by the policy.

## ◆ next_bucket_count()

template<std::size_t GrowthFactor>

std::size_t tsl::hh::power_of_two_growth_policy< GrowthFactor >::next_bucket_count | ( |  | ) | const
| inline

Return the bucket count to use when the bucket array grows on rehash.

## ◆ round_up_to_power_of_two()

template<std::size_t GrowthFactor>

static std::size_t tsl::hh::power_of_two_growth_policy< GrowthFactor >::round_up_to_power_of_two | ( | std::size_t | value | ) |
| inlinestaticprivate

## Member Data Documentation

## ◆ m_mask

template<std::size_t GrowthFactor>

std::size_t tsl::hh::power_of_two_growth_policy< GrowthFactor >::m_mask
| private

The documentation for this class was generated from the following file:

- src/hash/hopscotch_growth_policy.h