BDE 4.14.0 Production release
Loading...
Searching...
No Matches
bslh_hashpair

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 'bslh::DefaultHashAlogorithm object:

hasherS(&c, sizeof(char));
hasherS(&s, sizeof(short));
Definition bslh_defaulthashalgorithm.h:346
InternalHashAlgorithm::result_type result_type
Typedef indicating the value type returned by this algorithm.
Definition bslh_defaulthashalgorithm.h:374
result_type computeHash()
Definition bslh_defaulthashalgorithm.h:428

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::hashAppend(hasherT, t);
bsl::enable_if<(bsl::is_integral< TYPE >::value||bsl::is_pointer< TYPE >::value||bsl::is_enum< TYPE >::value)&&!bsl::is_same< TYPE, bool >::value >::type hashAppend(HASH_ALGORITHM &hashAlg, TYPE input)
Definition bslh_hash.h:638

Finally, we confirm that we computed the same result.

assert(hashS == hashT);