C++ 具名要求:散列 (Hash)
散列 (Hash) 是函数对象,其输出仅依赖于输入,且当给定不同输入值时,有非常低的概率生成相同输出。
要求
以下情况下,类型 T
满足散列 (Hash) :
给定
-
T
或const T
类型的值h
,其实参类型是Key
- 可转换为
Key
或const Key
的值k
-
Key
类型的左值表达式u
下列表达是必须合法且拥有其指定的效果
表达式 | 返回类型 | 要求 |
---|---|---|
h(k) | std::size_t
|
返回值在程序执行期间仅依赖于 k 的值。所有在程序执行内执行的 h(k) 的求值对 k 的相同值生成相同结果。
a!=b 的情况下 h(a)==h(b) 的概率应当趋近于 1.0/std::numeric_limits<std::size_t>::max()。 |
h(u) | std::size_t
|
不修改 u
|
标准库
(C++11) |
散列函数对象 (类模板) |
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
DR | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 2291 | C++11 | 在所有情况下要求对相同参数的相同结果 | 仅在单次执行内要求 |