Quick Links:

bal | bbl | bdl | bsl

Namespaces

Component bslh_hashpair
[Package bslh]

Provide hashAppend for std::pair. More...

Namespaces

namespace  bslh

Detailed Description

Outline
Purpose:
Provide hashAppend for std::pair.
Description:
This component provides a free function template, bslh::hashAppend, overloaded for the std::pair class template. Including this function allows for std::pair types (and types that contain them) to be used as keys in BDE hashed containers.
Usage:
This section illustrates intended usage of this component.
Example 1: Hashing a Pair of Integer Values:
Suppose one must compute has that combines the hashes of several integer values, each of a different type:
  char  c = 'a';
  short s = static_cast<short>(1);
First, we can make that calculation by repeated invocations of a 'bslhDefaultHashAlogorithm object:
  bslh::DefaultHashAlgorithm hasherS;
  hasherS(&c, sizeof(char));
  hasherS(&s, sizeof(short));

  bslh::DefaultHashAlgorithm::result_type hashS = hasherS.computeHash();
Now, the same calculation can also be be made if those same values are contained in a single std::pair object.
  std::pair<char, short> t = std::make_pair(c, s);

  bslh::DefaultHashAlgorithm hasherT;
  bslh::hashAppend(hasherT, t);

  bslh::DefaultHashAlgorithm::result_type hashT = hasherT.computeHash();
Finally, we confirm that we computed the same result.
  assert(hashS == hashT);