vector<int> data = {3, 1, 5, 3, 3, 8, 7, 3, 2};
std::nth_element(data.begin(), data.begin() + median, data.end());
これは常に次の結果になりますか?
data = {less, less, 3, 3, 3, 3, larger, larger, larger} ?
または、他の可能な結果は次のようになります。
data = {3, less, less, 3, 3, 3, larger, larger, larger} ?
私のマシンで何度も試してみたところ、n番目の値が常に連続していました。しかし、それは証拠ではありません;)。
目的:
一意の Kdtree を構築したいのですが、ベクターに重複があります。現在、中央値を見つけるために nth_element を使用しています。問題は、ベクトルを再度トラバースすることなく、一意の再構成可能な中央値を選択することです。中央値が連続している場合は、あまりトラバースせずに一意の中央値を選択できます。