lambda表达式的理解
lambda表达式的具体定义可以去网上找,我对它的理解就是将一个函数以更简洁的方式,以表达式的形式内嵌在某个函数中。
lambda表达式的应用场景
lambda表达式最常用的是在sort函数中,把cmp函数以lambda表达式直接写在内部,代码如下:
1 | sort(a.begin(),a.end(),[&](int x,int y){//此排序采用降序排序 |
等价于
1 | bool cmp(int x,int y){ |
如果习惯使用定义全局变量的话,可能很多人都基本不会在算法题里用到lambda表达式,但是像我这种对于多种数据懒得手动清空的人来说,不得不把相关变量都定义在solve函数内部,因此再不进行传参的情况下果断选择了lambda表达式,以下是常见的lambda函数写法:
1 | auto check=[&](int x){ |
等价于
1 | bool check(int x){ |
对于一种特殊的函数,即需要调用自身的递归函数,写法上稍有变化
1 | auto dfs=[&](auto &self,int x)-> int { |
其中self和x一样都是随便取的名字,非强制要求,但一个都得要有一个参数代表函数自身。
注意事项
注意lambda表达式依然只是一个表达式,每个lamda表达最后要记得跟上一个“;”
递归函数中“->”后的数据类型需要用空格隔开