0

大量 (10.000-100.000) の小さな (int、floats、および double) アイテムのみを挿入し、それらすべてを反復処理する場合 (順序は重要ではありません)、使用する std コンテナーはどれになりますか? (注:最初はアイテム数は不明)

unsorted_set、list、forward_list には、挿入用に O(1)、反復用に O(n) があることに気付きました。その複雑さを持っているものは他にありますか?それらの中で最も速いのはどれですか? (メモリ使用量に大きな違いがある場合は、それらについて知りたいと思います。

(Boostや他のライブラリではなく、stdコンテナにのみ興味があります)

4

4 に答える 4

2

私の賭けはstd::vectorへのコールstd::vector::reserve()です。

于 2013-08-14T13:31:34.853 に答える
0

ベクトルは良い選択かもしれません。メモリ消費量は配列と同じです。O(1) 挿入 (最後に挿入する場合) と O(n) 反復。これは最も単純なコンテナーであり、削除またはランダム挿入がリストにない場合に適しています。

于 2013-08-14T13:20:45.583 に答える
0

質問のすべてのクラスは、必要なものに対して最適な複雑さを持っていますが、特に挿入する要素の数がおよそわかっている場合、つまり利用可能な上限がある場合は、std::vector の方が高速である可能性があります。

コンパイラ、コンパイラのバージョン、挿入する要素の数によってパフォーマンスが異なる場合があると思います。より具体的なヘルプを提供できなくて申し訳ありません。

于 2013-08-14T13:23:31.237 に答える