「同じエントリにヒットする多くの挿入」を理解しているかどうかはわかりません。メンバーである値は 100 個しかなく、それらの 100 個の値の 1 つを挿入する 500k のほとんど重複した操作があるということですか?
もしそうなら、最速のコンテナは、それらの100個の値に対して衝突のないハッシュを生成し、フラグの配列(またはベクトル)を維持することであると思います(intまたはbit、アーキテクチャで最も速く動作するものに応じて) )。
ハッシュの生成は、技術として存在することを知っているため、読者の演習として残しますが、自分で調べたことはありません。ポイントは、100 個の値の各 n、m について、hash(n) != hash(m) のように、できるだけ狭い範囲で高速なハッシュを取得することです。
したがって、挿入は のように見えarray[hash(value)] = 1;
、削除はarray[hash(value)] = 0;
(必要ありませんが) のように見え、配列を列挙するには、インデックス n の設定値ごとに inverse_hash(n) がコレクションにあります。範囲が狭い場合は、ルックアップ テーブルを簡単に維持して逆ハッシュを実行できます。または、配列全体をスキャンしてフラグの設定を探す代わりに、100 個の潜在的な値を実行して、それぞれを順番にチェックすることができます。
状況を誤解していて、これが役に立たない場合は申し訳ありません。正直なところ、通常のハッシュテーブルよりもはるかに高速というわけではありません。実際には、100 個の値の場合、キャッシュを吹き飛ばすほど多くのメモリを使用することなく、衝突がほとんどまたはまったくないようにテーブルのサイズを簡単に変更できるからです。