配列「_vec」の値に基づいてインデックスをソートするための単純なコンパレータを実装しようとしています。「無効な < 演算子」という実行時エラー メッセージが表示されます。次のコードの何が問題なのか理解できません。
class Compare{
vector<int>& _vec;
public:
Compare(vector<int>& vec) : _vec(vec) {}
bool operator()(size_t i, size_t j){
if(_vec[i] != _vec[j])
return _vec[i] < _vec[j];
else
return (double)rand()/RAND_MAX < 0.5;
}
};
次の関数呼び出しを使用しています。
sort(inds.begin(),inds.end(),Compare(vals));
ここで、inds は 1 から 15 までのインデックス (たとえば) を含む単なる配列であり、vals は長さ 15 の配列で、ソートされたインデックスを計算したい値が含まれています。全体的な目標は、vals の 2 つ (またはそれ以上) のエントリが等しい場合に、並べ替え順序をランダム化することです。何か助けはありますか?