首页 > 代码库 > 初入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)