0

std :: setを使用して、順序付けされていない重複値のベクトルを並べ替えます。セット内で要素を見つけるたびに、要素の位置(インデックス)も知る必要があります。私のセットにはたくさんの要素(数十万)があり、std :: distance()を使用するとひどいパフォーマンスが得られます。

std :: distanceが唯一の方法ですか?

4

1 に答える 1

-1

std :: sort()アルゴリズムを使用して、要素を適切に並べ替えることができます。次に、binary_search()を使用してベクトル内の要素を見つけたら、その要素を指すイテレーターからbegin()の呼び出しの結果を減算するだけです。

別の方法は、元のベクトルを上書きしたくない場合は、std :: partial_sort_copy()を使用することです。別のベクトルに並べ替えるだけで、上記と同じことができます。

于 2012-05-21T01:49:37.347 に答える