目录
Lambda是C++ 11的新特性之一,查看网上对其的解释往往晦涩难懂,在这说下自己的理解。
1 引言
我们先来看个排序的例子:
bool cmp(const int &a, const int &b) //定义比较函数
{
return a > b;
}
int main()
{
vector<int>v{ 1,3,2,4,6,5,4 };
sort(v.begin(), v.end(), cmp); //降序排列
for (auto x : v)cout << x << endl;
return 0;
}
在这段程序中,我们主要是通过sort函数实现排降序的功能,我们都知道,sort函数默认执行的是升序排列,如果要进行降序排列的话,我们就需要自己定义一个比较函数。虽然这里不算错,但是还是有些问题:
①如果我在其他地方还需要定义比较函数(比如说用sort对对象排序、字符串排序....),那就又要定义如同cmp1、cmp2....之类的,一旦多了,那函数的命名就麻烦了;
②比较函数一般都是临时调用一次,后续很大可能都不会再使用了,如果还专门拿出来定义,那就显得代码不是那么简洁了;
③试想一下,当我们想查看cmp函数定义的时候,就需要转到代码中定义cmp的地方,然后再回到sort,也有可能像这样的操作不止一次,这似乎就有些麻烦了。
…