C++ named requirements: Hash (since C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
A Hash は、出力が入力のみに依存し、異なる入力値が与えられた場合に同じ出力を生成する確率が非常に低い関数オブジェクトです。
要件
型
T
は、以下の条件を満たす場合
Hash
を満たします
-
型
Tは FunctionObject 、 CopyConstructible 、 Destructible を満たし、かつ
与えられた
-
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 | すべての場合で同じ引数に対して同じ結果が要求されていた | 単一の実行内でのみ要求 |