命名空间
变体
操作

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

来自 cppreference.cn
 
 
C++ 命名要求
基本
类型属性
全库范围
Hash(哈希)
(C++11)




Container(容器)
容器元素
迭代器 (Iterator)
流 I/O
格式化器
随机数
并发
范围 (Ranges)
多维视图
其他

 

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

[编辑] 要求

类型 T 满足 哈希 (Hash),如果

给定

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

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

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

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

对于 a != bh(a) == h(b) 的概率应接近 1.0 / std::numeric_limits<std::size_t>::max()

h(u) std::size_t u 未被修改。

[编辑] 标准库

(C++11)
哈希函数对象
(类模板) [编辑]

[编辑] 缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 发布时的行为 正确的行为
LWG 2291 C++11 在所有情况下都要求相同的参数产生相同的结果 仅在单次执行中要求