26 #include <type_traits>
64 return (key >> 3) * 2654435761U;
69 template<
class T,
class Enable =
void>
75 struct fnv<T, typename std::enable_if<sizeof(T) == 4>::type>
77 static_assert(std::is_integral<T>::value && std::is_unsigned<T>::value,
78 "Fowler-Noll-Vo hash requires an unsigned integral type");
79 static constexpr T init = 2166136261UL;
80 static constexpr T prime = 16777619UL;
85 struct fnv<T, typename std::enable_if<sizeof(T) == 8>::type>
87 static_assert(std::is_integral<T>::value && std::is_unsigned<T>::value,
88 "Fowler-Noll-Vo hash requires an unsigned integral type");
89 static constexpr T init = 14695981039346656037ULL;
90 static constexpr T prime = 1099511628211ULL;
102 for (; begin != end; ++begin)
size_t fnv_hash(It begin, It end)
Fowler-Noll-Vo hash function.
Definition: hashfunc.hh:99
size_t wang32_hash(size_t key)
Thomas Wang's 32 bit hash function.
Definition: hashfunc.hh:41
size_t knuth32_hash(size_t key)
Knuth's Multiplicative hash function.
Definition: hashfunc.hh:60
Definition: automata.hh:27
Struct for Fowler-Noll-Vo parameters.
Definition: hashfunc.hh:71