私は一連のオブジェクト (約 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 回取得する方が高速であると想定します。
私の論理は健全ですか?パフォーマンスの違いは重要ですか?私が考えていない他のオプションはありますか?