Namespaces
Variants

C++ named requirements: Hash (since C++11)

From cppreference.net
C++ named requirements

一个 哈希 函数对象,其输出仅取决于输入,并且在给定不同输入值时产生相同输出的概率极低。

需求

当类型 T 满足 Hash 条件时

给定

  • 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)
哈希函数对象
(类模板)

缺陷报告

以下行为变更缺陷报告被追溯应用于先前发布的C++标准。

缺陷报告 适用范围 发布时行为 正确行为
LWG 2291 C++11 要求所有情况下相同参数必须产生相同结果 仅要求在单次执行过程中保持一致