1925 次
2 に答える
2
負荷率は、挿入するアイテムの数とは無関係です。これは基本的に、実際に使用されている使用可能なスペースのパーセンテージです。たとえば、現在 100 要素分のスペースが割り当てられている場合、最大負荷係数は、たとえば 80 項目を挿入したときにテーブルのサイズ変更を開始すると言うことができます (これは最大負荷係数 80% に相当します)。
したがって、最大負荷係数の設定は、保存しようとしている要素の数とはほとんど無関係です。むしろ、これは (ほとんどの場合) 検索速度を向上させるためにどれだけの余分なスペースを使用するかを示しています。他のすべてが等しい場合、テーブルがいっぱいに近いほど衝突が多くなり、検索が遅くなります。
于 2012-06-12T23:46:16.230 に答える
1
N 個の要素を保持するように順序付けられていないセットを最適化する場合は、再ハッシュ関数を使用します。これは、セットの最小バケットを設定する引数を受け入れます。これにより、要素をセットに挿入するときに再ハッシュが発生するのを防ぐことができます。
たとえば、希望する負荷率が である75%
場合、バケット サイズは次のようになります。N / .75
// This creates an unordered set optimized for `80` elements with a load factor of `75%`
std::unordered_set<std::string> myset;
myset.rehash(120);
于 2012-09-27T16:01:39.357 に答える