C++ 具名要求:散列(Hash) (C++11 起)

来自cppreference.com
< cpp‎ | named req


 
 
C++ 具名要求
 

散列(Hash) 是函数对象,其输出仅依赖于输入,且当给定不同输入值时,有非常低的概率生成相同输出。

[编辑]要求

以下情况下,类型 T 满足散列(Hash)

给定

  • Tconst T 类型的值 h,其实参类型是 Key
  • 可转换为 Keyconst 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++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
LWG 2291 C++11 在所有情况下要求对相同参数的相同结果 仅在单次执行内要求
close