C++ 命名要求: Hash (自 C++11 起)
来自 cppreference.cn
Hash 是一个函数对象,其输出仅取决于输入,并且对于不同的输入值,产生相同输出的概率非常低。
[编辑] 要求
如果类型 T
满足 Hash,则
- 类型
T
满足 FunctionObject、 CopyConstructible、 Destructible,并且
给定
- h,类型为
T
或const T
的值,其参数类型为Key
, - k,类型可转换为
Key
或 const Key 的值, - u,类型为
Key
的 左值 表达式。
以下表达式必须有效并具有指定的效应。
表达式 | 返回类型 | 要求 |
---|---|---|
h(k) | std::size_t | 返回的值仅取决于程序执行期间 k 的值。 在给定程序的执行中,对于 k 的相同值,对 h(k) 的所有求值都应产生相同的结果。 对于 a != b,h(a) == h(b) 的概率应接近 1.0 / std::numeric_limits<std::size_t>::max()。 |
h(u) | std::size_t | u 未被修改。 |
[编辑] 标准库
(C++11) |
hash 函数对象 (类模板) |
[编辑] 缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。
DR | 应用于 | 已发布行为 | 正确行为 |
---|---|---|---|
LWG 2291 | C++11 | 在所有情况下,对于相同的参数都要求相同的结果 | 仅在单次执行中要求 |