class Person
我希望根据其数据成员' '对对象数组进行排序age
。我将对象存储在vector<Person> v
.
据我了解,至少有 4 种方法可以执行此操作,并且根据下面编写的方法,我有以下问题。
在类中定义如何
operator()
工作?我不应该在这里重载“<”运算符吗?为什么 '()' ?我在方法 1 中发送了一个对象作为第三个参数。但是,在方法 2 中,我发送了一个函数的名称。为什么会这样?
这四种方法哪一种最好?我觉得方法3是最简单的。
方法一
class cmp
{
public:
bool operator() ( Person const &a, Person const &b )
{
return a.age < b.age ;
}
};
sort( v.begin(), v.end(), cmp());
方法二
bool cmp( const Person a, const Person b )
{
return a.age < b.age ;
}
sort( v.begin(), v.end(), cmp );
方法三
bool operator < ( const Person a, const Person b )
{
return a.age < b.age ;
}
sort( v.begin(), v.end());
方法四
//using lambda expression
sort( v.begin(), v.end(), [](const Person &a, const Person &b){return a.age < b.age;});