Generating hash values for custom types
The standard library provides several unordered associative containers: std::unordered_set
, std::unordered_multiset
, std::unordered_map
, and std::unordered_map
. These containers do not store their elements in a particular order; instead, they are grouped in buckets. The bucket an element belongs to depends on the hash value of the element. These standard containers use, by default, the std::hash
class template to compute the hash value. The specialization for all basic types and also some library types is available. However, for custom types, you must specialize the class template yourself. This recipe will show you how to do that and also explain how a good hash value can be computed.
Getting ready
This recipe covers hashing functionalities from the standard library. You should be familiar with the concepts of hashes and hash functions.
For the examples in this recipe, we will use the following class:
struct Item { int id; std::string...