1

重複の可能性:
構造体またはクラスのベクトルで特定の値を持つオブジェクトを高速に検索するにはどうすればよいですか? c++

イテレータを使用して、見つかったときに停止するよりも、特定のパラメータの指定された値を持つベクトル内のオブジェクトを見つける高速な方法はありますか? 私はベクトルを持っています

どこ

class Simple{
public:
string name;
int id;
}
4

2 に答える 2

10

ベクトル (ソートされているかどうかなど) について何も知らなくても、取得できる最速の時間は線形時間です (反復子を使用するのと同じように)。

std::find_ifただし、線形時間で実行されますが、コードを美しくするために使用できます。

コンテナーに対して複数回クエリを実行する場合は、コンテナーを並べ替え ( O(n*log(n)))、バイナリ検索を使用する( ) ことをお勧めしますO(log(n))。ただし、これは、クエリの数が要素の数に匹敵する場合にのみ有効です。

于 2012-06-26T12:54:04.197 に答える
1
  • ソートされたベクトルを使用する場合は、二分探索を使用できます。
  • に置き換えることができstd::vector<Simple>ますstd::map<int, std::string>
于 2012-06-26T12:59:44.177 に答える