STLにソートされたコンテナはありますか?
私が意味するのは次のとおりです。私はstd::vector<Foo>
、Foo
カスタムメイドのクラスを持っています。クラスのフィールドを比較するある種のコンパレータもありますFoo
。
今、私のコードのどこかで私はやっています:
std::sort( myvec.begin(), myvec.end(), comparator );
これは、コンパレータで定義したルールに従ってベクトルをソートします。
次に、クラスの要素をFoo
そのベクトルに挿入します。できれば、次のように書きたいと思います。
mysortedvector.push_back( Foo() );
そして何が起こるかというと、ベクトルはコンパレータに従ってこの新しい要素をその場所に配置します。
代わりに、今私は書く必要があります:
myvec.push_back( Foo() );
std::sort( myvec.begin(), myvec.end(), comparator );
ベクトルはすでにソートされており、必要なのは新しい要素を適切に配置することだけなので、これは時間の無駄です。
現在、私のプログラムの性質上std::map<>
、キーと値のペアがなく、単純なベクトルであるため、使用できません。
を使用する場合はstl::list
、挿入するたびに再度sortを呼び出す必要があります。