0
私はプログラムをより効率的に走らせようとしています。このリニアサーチを修正することは、スピードの面で大きな助けになると思いますが、これをバイナリ私はリストが必ずしも注文されていないと思うので、検索。最初の引数key
に基づいてリストを注文する方法はありますか?私は現在で働いて何リストを検索する方法は簡単ですか?
:
int* key_sequences::data(int key){
for(it=myList.begin(); it!=myList.end(); ++it){
if(it->first==key){
return &(it->second[0]);
}
}
return nullptr;
};
ソートされたシーケンスなしではバイナリ検索ができません。 –
明白な答えは、リストを使用して終了し、より適切なデータ構造(物の外見から 'map'または' unordered_map')に置き換えることです。挿入/削除がいつ/どのくらい頻繁に行われるかによって、ソートされた配列のバイナリ検索である "FlatMap"も考えられます。 –
多くの場合、連続したキーに対してシーケンスが繰り返し検索されます。最後の検索結果をキャッシュすると、O(n²)からO(n)までの合計時間が短縮されます。しかし、データ構造を 'map'のようなより適切なものに変更したいと思います。 –