![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
HashingBoost , Chapter 1. Fusion 2.2 , Operator
|
Параметр |
Требование |
Описание |
---|---|---|
< |
Последовательностьдля вычисления значения хэша |
Тип возврата:<std::size_t
>
Требования:
Для каждого элемента<e
>в последовательности<seq
>,<hash_value(seq)
>является допустимым выражением, возвращающим тип, который преобразуется в<std::size_t
>.
Семантика: Возвращает комбинированное значение хэша для всех элементов<seq
>.
#include <boost/fusion/sequence/hash.hpp> #include <boost/fusion/include/hash.hpp>
#include <boost/fusion/include/equal_to.hpp> #include <boost/fusion/include/hash.hpp> #include <boost/fusion/include/vector.hpp> #include <boost/unordered_map.hpp> void foo() { typedef boost::fusion::vector<int, std::string, char> Vec; const Vec v = {42, "Hello World", 't'}; // Compute a hash value directly. std::cout << "hash_value(v) = " << boost::fusion::hash_value(v) << '\n'; // Or use it to create an unordered_map. boost::unordered_map<Vec, bool> map; map[v] = true; assert(map.size() == 1 && map.count(v) == 1); }
#include <boost/fusion/include/define_struct.hpp> #include <boost/fusion/include/equal_to.hpp> #include <boost/fusion/include/hash.hpp> #include <boost/unordered_set.hpp> // We would like to define a struct that we can form unordered_sets of. BOOST_FUSION_DEFINE_STRUCT( (demo), Key, (bool, b) (std::string, s) (int, i) ) namespace demo { // Make operator== and hash_value ADL accessible. using boost::fusion::operator==; using boost::fusion::hash_value; typedef boost::unordered_set<demo::Key> Set; } void foo() { demo::Set set; demo::Key key; assert(set.count(key) == 0); }
Статья Hashing раздела Chapter 1. Fusion 2.2 Operator может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |