命名空间
变体
操作

C++ 命名要求: Hash (自 C++11 起)

来自 cppreference.cn
 
 
C++ 命名要求
 

Hash 是一个函数对象,其输出仅取决于输入,并且对于不同的输入值,产生相同输出的概率非常低。

[编辑] 要求

如果类型 T 满足 Hash,则

给定

  • h,类型为 Tconst T 的值,其参数类型为 Key
  • k,类型可转换为 Keyconst Key 的值,
  • u,类型为 Key左值 表达式。

以下表达式必须有效并具有指定的效应。

表达式 返回类型 要求
h(k) std::size_t 返回的值仅取决于程序执行期间 k 的值。

在给定程序的执行中,对于 k 的相同值,对 h(k) 的所有求值都应产生相同的结果。

对于 a != bh(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 在所有情况下,对于相同的参数都要求相同的结果 仅在单次执行中要求