次の問題を解決するコードを書いています: 一連の数値x[0]
, x[1]
, ...,が与えられた場合x[N-1]
、それらを昇順に並べ替える順列を見つけます。言い換えれば、{0,2,...,N-1} の順列を 、 、 ... のように見つけたいと考えi[0]
てi[1]
いi[N-1]
ますx[i[0]] <= x[i[1]] <= ... <= x[i[N-1]]
。
このために、x
ベクトルとインデックス ベクトルi
(最初は で埋められているi[j] = j
) をクラスのプライベート メンバーとして格納しました。また、プライベートメソッドを次のように定義しました
bool MyClass::compare(size_t s, size_t t) {
return (x[s] < x[t]);
}
今、私は次のように呼び出しstd::sort
ます
std::sort(i.begin(), i.end(), compare);
そして、私は望ましい結果が得られることを期待しています。しかし、コードはコンパイルされず、次のエラーが発生します。
error: no matching function for call to ‘sort(std::vector<long unsigned int>::iterator, std::vector<long unsigned int>::iterator, <unresolved overloaded function type>)’
std::sort
比較演算子として関数を渡すことができるという言及のドキュメントと同様に、すべてを正しく行ったに違いありませんstd::sort
( http://www.cplusplus.com/reference/algorithm/sort/ )
事前にご協力いただきありがとうございます。