假设我有
struct Value { int foo(); };
size_t *begin = ...,
*end = ...;
如果我想在 C++03 中对一堆Value
索引进行排序,我必须写一些像这样乏味的东西:
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 行中?