格式:[capture-list] (parameters) mutable -> return-type { statement}
[capture-list]:捕捉列表。用来识别是否为lambda函数。捕捉上下文参数供lambda函数使用。
(parameters) :需要使用到的参数,与普通函数的参数列表一致,如果无参,则可以省略。
mutable :默认情况下,lambda函数是一个const函数,加上mutable 可以取消常性,使用该修饰符时,参数列表不可省略(即使参数为空)。
-> return-type:返回值类型。没有返回值时此部分可省略。返回值类型明确情况下,也可省略,由编译器对返回类型进行推导。
{ statement}:函数体。与正常函数函数体一样,可以使用参数列表的参数,也可以使用捕捕捉列表捕捉到的参数。
最简单的lambda函数为:[]{}。
写一个简单的lambda函数
int main(){
int a,b,c;
a=b=c=1;
//使用lambda函数以传值的方式捕捉a,b,c,进行a+b+c
auto func1=[=](int a,int b,int c)->int{return a+b+c;}//[=]代表以传值的方式捕捉a,b,c
//上面的->int 可以省略,修改为:[=](int a,int b,int c){return a+b+c;}
//使用lambda函数以引用的方式捕捉a,b,c,改变a,b,c的值
auto func2=[=](int a,int b,int c){a=2,b=2,c=2};
return 0;
}