...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
When using a hash index with Boost.MultiIndex,
you don't need to do anything to use boost::hash
as it uses it by default. To find out how to use a user-defined type, read
the section on extending boost::hash for a custom
data type.
If your standard library supplies its own implementation of the unordered associative
containers and you wish to use boost::hash
,
just use an extra template parameter:
std::unordered_multiset<int,boost::hash
<int> > set_of_ints; std::unordered_set<std::pair<int, int>,boost::hash
<std::pair<int, int> > set_of_pairs; std::unordered_map<int, std::string,boost::hash
<int> > map_int_to_string;
To use boost::hash
directly, create
an instance and call it as a function:
#include <boost/container_hash/hash.hpp
> int main() {boost::hash
<std::string> string_hash; std::size_t h = string_hash("Hash me"); }
For an example of generic use, here is a function to generate a vector containing the hashes of the elements of a container:
template <class Container> std::vector<std::size_t> get_hashes(Container const& x) { std::vector<std::size_t> hashes; std::transform(x.begin(), x.end(), std::back_inserter(hashes), boost::hash<typename Container::value_type>()); return hashes; }