【发布时间】:2013-11-10 09:04:36
【问题描述】:
我希望根据其数据成员“age”对class Person 的对象数组进行排序。我将对象存储在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 );
方法3
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;});
【问题讨论】: