私が持っているとしましょう
struct Value { int foo(); };
size_t *begin = ...,
*end = ...;
Value
C ++ 03で多数のインデックスを並べ替える場合は、次のような面倒な記述を行う必要があります。
struct Comparator
{
Value *data;
Comparator(Value *data) : data(data) { }
bool operator()(size_t a, size_t b)
{ return data[a].foo() < data[b].foo(); }
};
sort(begin, end, Comparator(data));
Boostを使って(おそらくBoost.Lambdaを使って)これをもっときれいに、できれば1行で書く方法はありますか?