Namespaces
Variants

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

From cppreference.net
C++ named requirements

A Hash は、出力が入力のみに依存し、異なる入力値が与えられた場合に同じ出力を生成する確率が非常に低い関数オブジェクトです。

要件

T は、以下の条件を満たす場合 Hash を満たします

与えられた

  • h 、型 T または const T の値。その引数型は Key である。
  • k Key または const Key に変換可能な型の値。
  • u 、型 Key 左辺値 式。

以下の式は有効であり、指定された効果を持たなければなりません。

戻り値の型 要件
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++規格に対して遡及的に適用されました。

DR 適用対象 公開時の仕様 正しい仕様
LWG 2291 C++11 すべての場合で同じ引数に対して同じ結果が要求されていた 単一の実行内でのみ要求