|  | 
|      | 
|  | 
| Combining hash valuesBoost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 14. Boost.Functional/Hash
  
   | |||||||||
| ![[Note]](/img/note.png) | 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 ::
| реклама |