首页 > 代码库 > 初入lambda表达式 (主要是c++11)
初入lambda表达式 (主要是c++11)
写一篇不猫的博文吧
定义
lambda表达式的定义如下
[capture](parameters) mutable ->return-type{statement}
翻译成人话就是
1.[capture]:捕捉列表。捕捉列表总是出现在Lambda函数的开始处。实际上,[]是Lambda引出符。编译器根据该引出符判断接下来的代码是否是Lambda函数。捕捉列表能够捕捉上下文中的变量以供Lambda函数使用;
2.(parameters):参数列表。与普通函数的参数列表一致。如果不需要参数传递,则可以连同括号“()”一起省略;
3.mutable:mutable修饰符。默认情况下,Lambda函数总是一个const函数,mutable可以取消其常量性。在使用该修饰符时,参数列表不可省略(即使参数为空);
4.->return-type:返回类型。用追踪返回类型形式声明函数的返回类型。我们可以在不需要返回值的时候也可以连同符号”->”一起省略。此外,在返回类型明确的情况下,也可以省略该部分,让编译器对返回类型进行推导;
5.{statement}:函数体。内容与普通函数一样,不过除了可以使用参数之外,还可以使用所有捕获的变量。
en,大概是这样吧
让我们写几个程序练练手~~~
1.简单排序
#include <cstdio>#include <algorithm>int a[10]={0,1,2,3,4,5,6,7,8,9};int main(){ std::sort(a,a+10,[](int x,int y){return x>y;}); for(register int i=0;i<10;i++) printf("%d\n",a[i]); return 0;}
初入lambda表达式 (主要是c++11)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。