![]() |
![]() ![]() ![]() ![]() |
![]() |
Combining hash valuesBoost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 14. Boost.Functional/Hash
|
|||||||||
![]() |
Note |
|---|---|
|
При использовании<
std::size_t seed = 0;
boost::hash_combine(seed, 1);
boost::hash_combine(seed, 2);
В результате получается другое семя для:
std::size_t seed = 0;
boost::hash_combine(seed, 2);
boost::hash_combine(seed, 1);
Если вы вычисляете значение хэша для данных, где порядок данных не имеет значения в сравнении (например, набор), вы должны убедиться, что данные всегда поставляются в том же порядке. |
Для расчета хэша диапазона итераторов можно использовать<boost::hash_range>:
std::vector<std::string> some_strings;
std::size_t hash = boost::hash_range(some_strings.begin(), some_strings.end());
Обратите внимание, что при написании классов шаблонов вы, возможно, не захотите включать основной хеш-заголовок, так как это довольно дорогое включение, которое приносит много других заголовков, поэтому вместо этого вы можете включить заголовок<<boost/functional/hash_fwd.hpp>>, который вперед объявляет<boost::hash>,<boost::hash_range>и<boost::hash_combine>. Вам нужно будет включить основной заголовок перед началом<boost::hash>. При использовании контейнера, который использует<boost::hash>, он должен сделать это для вас, поэтому ваш тип будет хорошо работать с хеш-контейнерами. Примером этого являетсяtemplate.hppиtemplate.cpp.
Статья Combining hash values раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 14. Boost.Functional/Hash может быть полезна для разработчиков на c++ и boost.
:: Главная :: Chapter 14. Boost.Functional/Hash ::
реклама |