123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #pragma once
- #include <util/generic/hash.h>
- #include <util/random/random.h>
- namespace NYT {
- ////////////////////////////////////////////////////////////////////////////////
- //! Updates #h with #k.
- //! Cf. |boost::hash_combine|.
- void HashCombine(size_t& h, size_t k);
- //! Updates #h with the hash of #k.
- //! Cf. |boost::hash_combine|.
- template <class T>
- void HashCombine(size_t& h, const T& k);
- ////////////////////////////////////////////////////////////////////////////////
- //! Provides a hasher that randomizes the results of another one.
- template <class TElement, class TUnderlying = ::THash<TElement>>
- class TRandomizedHash
- {
- public:
- TRandomizedHash();
- size_t operator () (const TElement& element) const;
- private:
- size_t Seed_;
- TUnderlying Underlying_;
- };
- ////////////////////////////////////////////////////////////////////////////////
- } // namespace NYT
- #define HASH_INL_H_
- #include "hash-inl.h"
- #undef HASH_INL_H_
|