C ++リストとベクターを含む3つの異なる実験を実行しました。
中間に多くの挿入が含まれていた場合でも、ベクトルを使用したものはより効率的であることが証明されました。
したがって、質問:どの場合、リストはベクトルよりも意味がありますか?
ほとんどの場合、ベクトルがより効率的であると思われ、それらのメンバーがどれだけ似ているかを考えると、リストにはどの利点が残っていますか?
N個の整数を生成し、コンテナに入れて、コンテナがソートされたままになるようにします。挿入は、要素を1つずつ読み取り、最初の大きい要素の直前に新しい要素を挿入することにより、単純に実行されました。
リストを使用すると、ベクトルと比較して寸法が大きくなると屋根を通過します。コンテナの最後にN個の整数を挿入します。
リストとベクトルの場合、時間は同じ桁数増加しましたが、ベクトルの場合は3倍高速でした。コンテナにN個の整数を挿入します。
タイマーを開始します。
リストにはlist.sortを使用し、ベクターにはstd :: sortを使用してコンテナをソートします。タイマーを停止します。
繰り返しますが、時間は同じ桁で増加しますが、ベクトルでは平均で5倍速くなります。
引き続きテストを実行し、リストの方が良い例がいくつか見つかるかもしれません。
しかし、このメッセージを読んでいる皆さんの共同経験は、より生産的な答えを提供するかもしれません。
リストの使用がより便利だったり、パフォーマンスが向上したりする状況に出くわしたことがありますか?
list
あなたが要素の多くを削除する場合、おそらくより良い行います。vector
ベクター全体が削除されるまで、システムにメモリが返されるとは思わない。また、テスト1では挿入時間だけをテストしているわけではないことに注意してください。これは、検索と挿入を組み合わせたテストです。挿入list
が遅い場所を見つけることです。実際の挿入はベクターよりも高速です。