6

std :: unordered_mapの2つのキーが同じハッシュ値を持っている場合、それらが同じバケットに入ることが標準によって保証されていますか?テンプレートの等価述語によれば、キーは等しくないと想定しており、それらは同じハッシュ値しか持っていません。

ボーナスの質問:同じハッシュが同じバケットを意味しない場合、バケットを個別にトラバースできるようにする目的は何ですか?

4

1 に答える 1

8

同じハッシュを持つオブジェクトは、順序付けされていない連想コンテナによって同じバケットに入れられます。したがって、2つの等しいオブジェクトは同じハッシュを持っている必要があります。

23.2.5パラグラフ8:

順序付けされていない連想コンテナの要素は、バケットに編成されます。同じハッシュコードを持つキーは同じバケットに表示されます。

ボーナスの質問:なぜバケットを個別にトラバースしたいのですか?

ボーナス回答:コンテナの内容を並行して処理したいからです。バケットイテレータは互いに独立しているため、各スレッドは調整なしでバケットを処理できます(コンテナに新しいエントリが追加されていない場合)。また、バケットはほぼ同じサイズである必要があるため、便利な並列化クォンタムを提供します。

于 2012-10-15T18:04:38.387 に答える