2013-08-16 5 views
8

ハッシュテーブル(unordered_mapやunordered_setなどの順序付けられていないコンテナ)がクエリの設定や最小負荷係数の設定用のインターフェイスを提供しない理由を理解しようとしていました。順序付けられていないコンテナは、最小負荷係数を定義するためのインタフェースを提供しないのはなぜですか?

言うcはunordered_setあり、Iは設定用

c.max_load_factor(val) 

を照会するため

c.max_load_factor() 

を使用することができます。

なぜC++ 11はmin_load_factorを照会するためのインタフェースを提供していませんか?説明する実装の詳細はありますか?

容器の収縮の要素数が影響を受けることができない場合に焼き直しを強制するために使用される最小負荷率:

また、Josuttis氏によってC++ STLは、と述べて。

+3

要素を削除するにはメモリを割り当てる必要がなく、失敗することはありません(デストラクタがスローしない限り、コンテナではなく要素のタイプを責める)。それが実際の理由かどうかはわかりませんが、もっと強いものがあるかもしれません。 –

+2

@SteveJessop:それは他のいくつかのコンテナと一貫していると言えます: 'vector'も' deque'も自動的に縮小しません。 –

+2

最低負荷係数は何ですか?サイズを変更する前にどれくらい小さくなっていますか? – andre

答えて

1

unordered_mapの負荷係数は、ハッシュテーブルの衝突確率に影響します。たとえば、2つの要素が同じバケットに配置される確率です。コンテナは、バケットの数を増やして再ハッシュを引き起こすしきい値としてmax_load_factorの値を使用します。

ユーザが制御できる最小負荷係数は、すでにコンテナ内にある要素の数を考慮する必要があるため、このようなことはありません。

+0

私はこれに同意することができます。あなたの言ってる事がわかります。 –

関連する問題