Hash
A Hash is a function object for which the output depends only on the input and has a very low probability of yielding the same output given different input values.
Requirements
Section titled “Requirements”The type T satisfies Hash if
The type T satisfies FunctionObject, CopyConstructible, Destructible, and
Given
h, a value of typeTor constT, whose argument type isKey,k, a value of type convertible toKeyorconst Key,u, an lvalue expression of typeKey.
The following expressions must be valid and have their specified effects.
| Expression | Return type | Requirements |
|---|---|---|
h(k) | std::size_t | The returned value depends only on the value of k for the duration of the program. All evaluations of h(k) executed within a given execution of a program yield the same result for the same value of k.The probability of h(a) == h(b) for a != b should approach 1.0 / std::numeric_limits<std::size_t>::max(). |
h(u) | std::size_t | u is not modified. |
Standard Library
Section titled “Standard Library”hash function object
(class template)
Defect reports
Section titled “Defect reports”The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
LWG 2291 (C++11)
| Link | https://cplusplus.github.io/LWG/issues/2291.html |
|---|---|
| Applied to | C++11 |
| Behavior as published | same results for same arguments were required in all cases |
| Correct behavior | only required within a single execution |