C++相談室 part48
■ このスレッドは過去ログ倉庫に格納されています
0586デフォルトの名無しさん
2006/04/04(火) 17:19:21外部から与えるコンパレータが内部構造に依存するのは道理としておかしい
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Foo {
int a, b;
public:
Foo(int a, int b) : a(a), b(b) { }
bool operator < (const Foo& o) const { return cmp_ab(*this, o); }
static bool cmp_ab(const Foo &lhs, const Foo &rhs) {
return lhs.a != rhs.a ? lhs.a < rhs.a : lhs.b < rhs.b; }
static bool cmp_ba(const Foo &lhs, const Foo &rhs) {
return lhs.b != rhs.b ? lhs.b < rhs.b : lhs.a < rhs.a; }
};
int main() {
vector<Foo> v;
v.push_back(Foo(0,2));v.push_back(Foo(1,1));v.push_back(Foo(2,0));
sort(v.begin(), v.end(), Foo::cmp_ab);
sort(v.begin(), v.end(), Foo::cmp_ba);
}
■ このスレッドは過去ログ倉庫に格納されています