いくつかの注意: でベクトルを並べ替えstd::sort()
、事前に並べ替えられたベクトルを で検索std::binary_search()
できます。std::unordered_map
は C++11 ハッシュ テーブルstd::map
です。挿入と消去。ドキュメントについては、それらのいずれかをGoogleで検索してください。
既存のデータ構造では、dataPoint が事前に並べ替えられている場合、N が dataPoint.size() である O(log2N) があり、平均的に等しくない dataPoints 比較で最初の float または two を比較するだけでよいと仮定します。ソートされていない、O(N) です。
data
明らかに、パフォーマンスの問題は、共通のインデックスが判明した後にラベルを調べる必要がないことです。ベクトルの外側にある dataPoint オブジェクトが与えられた場合に、そのインデックスが何であるかを調べるだけです。
並べ替えが望ましくない場合、または O(log2N) がまだ遅すぎる場合は、dataPoints をラベル付きのハッシュ テーブルに入れることを検討できます。
まれに、パフォーマンスの問題が dataPoints が定期的に同じフロートの先頭シーケンスで始まることが原因であるというまれなケースでは、(ベクトルの後ろから前に向かって比較するような簡単な解決策がないと仮定して) 何らかの種類のハッシュまたは最初に比較する要素の合計。既に等しいことがわかっている場合にのみ、float ごとの比較を行います。