![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
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 ::
реклама |