頻繁な追加/削除をサポートするためのコンテナを探しています。私はコンテナがどれだけ大きくなるかわからないが、巨大な再割り当てのために屋台を望んでいない。私は、パフォーマンスと一貫した振る舞いの間に良いバランスが必要です。一貫したパフォーマンスのための高速コンテナ
最初は、std :: tr1 :: unordered_mapを考慮しましたが、データセットの上限がわからないため、衝突によって実際にunordered_mapのパフォーマンスが低下する可能性があります。それは良いハッシュ関数の問題ではないので、マップの占有率がバケット数の半分以上であれば、衝突が問題になる可能性があるためです。
私はstd :: mapを検討していますが、衝突の問題はありませんが、ログ(n)のパフォーマンスしかないためです。
unordered_mapのターゲットサイズがわからないときに、インテリジェントに衝突を処理する方法はありますか?私が想像するこの状況を処理するための他のアイデアは珍しくありませんか?
ありがとう
正しい答えはもちろん、クラスの中に隠すことによってコンテナの選択を抽象化することです。次に、実際のアプリケーションを異なるコンテナでプロファイルすることができます。それは...私は 'std :: unordered_map'があなたが思うよりもうまくいくだろうと確信しています。 – Nemo
私は連想コンテナが必要だと思いますか? – GWW
おそらくstd :: vectorのパフォーマンスに驚かれるでしょう。非常に特殊な要件があるまでは、非常に良い選択です。 –