lambda表达式的引出
如果我们想要对一组数据进行排序,则可以使用sort函数来排序,但是对于自定义类型调用此函数的时候,我们需要来自定义比较大小的逻辑,比如下面这个例子
class A
{
public:
A(int a = 0)
:_a(a)
{
}
//自己定义比较大小的逻辑函数
bool operator>(const A& a) const
{
return _a > a._a;
}
bool operator<(const A& a) const
{
return _a < a._a;
}
public: //方便下面打印这里给成公有
int _a;
};
void test()
{
A array[] = {
1,3,5,7,2,4,6};//类型为A的一个对象数组
//默认从小到大排序
sort(array,array + sizeof(array)/sizeof(array[0]));
for(auto &e:array)
cout<<e._a<<" ";
cout<<endl;
//通过greayer<A>()来进行从大到小的排序
sort(array,array + sizeof(array)/sizeof(array[0]),greater<A>());
for(auto &e:array)
cout<<e._a<<" ";
cout<<endl;
}
输出的结果如下图
除了此方法之外也可以使用一个仿函数来进行大小比较的一个定义
class A
{
public:
A(int a = 0)
:_a(a)
{
}
public:
int _a;
};
//构造一个仿函数
struct Less
{
bool operator()(const A& a1,const A& a2)
{
return a1._a < a2._a;
}
};
struct Greater
{
bool operator