76 return std::numeric_limits<int64_t>::max();
99 : original_hash_(
hash), current_hash_(
hash), iteration_(1)
105 current_hash_ = original_hash_ + ((iteration_ * iteration_ + iteration_) >> 1);
111 return current_hash_;
146 hash_ = 5 * hash_ + 1 + perturb_;
182 hash_ = ((hash_ >> 16) ^ hash_) * 0x45d9f3b + perturb_;
185 hash_ = 5 * hash_ + 1;
222#define SLOT_PROBING_BEGIN(PROBING_STRATEGY, HASH, MASK, R_SLOT_INDEX) \
223 PROBING_STRATEGY probing_strategy(HASH); \
225 int64_t linear_offset = 0; \
226 uint64_t current_hash = probing_strategy.get(); \
228 int64_t R_SLOT_INDEX = int64_t((current_hash + uint64_t(linear_offset)) & MASK);
230#define SLOT_PROBING_END() \
231 } while (++linear_offset < probing_strategy.linear_steps()); \
232 probing_strategy.next(); \
LinearProbingStrategy(const uint64_t hash)
int64_t linear_steps() const
PythonProbingStrategy(const uint64_t hash)
int64_t linear_steps() const
int64_t linear_steps() const
QuadraticProbingStrategy(const uint64_t hash)
int64_t linear_steps() const
ShuffleProbingStrategy(const uint64_t hash)
unsigned __int64 uint64_t