一般的なアプローチを使用して演算子をオーバーロードするにはどうすればよいですか? 私はこの状況を持っています:
struct sortByDesc1 {
bool operator() (const pair<int, int> &left, const pair<int, int> &right) {
return left.second > right.second;
}
};
演算子>
を次のように変更します<
struct sortByAsc1 {
bool operator() (const pair<int, int> &left, const pair<int, int> &right) {
return left.second < right.second;
}
};
pair<int, int>
へのデータ型の小さな変更pair<float, float>
struct sortByDesc2 {
bool operator() (const pair<float, float> &left, const pair<float, float> &right) {
return left.second > right.second;
}
};
使用例
vector< pair<int, int> > vec;
sort(vec.begin(), vec.end(), sortByAsc1());
ジェネリック関数が欲しいのですが、可能ですか? 例えば。:
# Abstracting
sort(vec.begin(), vec.end(), generic(asc, int));