私は一連のオブジェクト (約 20) を定義するルーチンを持っていJet
ます<
。それらがソートされた後、私は最も低い2つを取ります。これを行うための迅速な方法は何ですか?これまでに考えたオプション:
boost::ptr_vector<Jet>
組み込みの を使用し.sort()
、最初の 2 つを取得し、boost::ptr_list<Jet>
、使用.sort()
、最初の 2 つを取る- 上記のようにリストを使用しますが、ソートするのではなく、 を使用
max_element
して要素を削除し、再度実行します。
次の理由から、使用std::vector<Jet>
が最悪のオプションになると思います。ランダムアクセスは必要ありません。ソートはオブジェクトをメモリ内で移動します。を呼び出したときにオブジェクトがコピーされますpush_back(Jet)
。std::list<Jet>
コピーが必要なため、 anは よりも悪いと思いboost::ptr_list<Jet>
ます。max_element
さらに、リスト全体をソートするよりも 2 回取得する方が高速であると想定します。
私の論理は健全ですか?パフォーマンスの違いは重要ですか?私が考えていない他のオプションはありますか?