您可以将 std::sort 与自定义比较函数一起使用:
bool is_younger(const Data& x, const Data& y) { return x.age < y.age; }
sorting:
std::sort(VectorOfData.begin(), VectorOfData.end(), is_younger);
或者,您可以定义自定义functor(注意:这实际上是首选,因为它增加了内联的可能性,请阅读:更快的排序)
struct is_younger_functor
{
bool operator()(const Data& x, const Data& y) const
{
return x.age < y.age;
}
};
sorting:
std::sort(VectorOfData.begin(), VectorOfData.end(), is_younger_functor());
如果要定义严格的排序关系Data
,您应该考虑将其转换为常规类型(定义运算符 、>=)。
在这种情况下,您不需要定义 is_younger 函子,并且可以仅使用迭代器调用 std::sort 。
编辑:严格来说,您只需要为 std::sort 定义运算符