一.Lambda表达式基本结构:
lambda表达式共分四部分,其中返回值类型可以省略
[外部变量访问方式说明符] (参数列表)-> 返回值类型 {函数体}
例:
[](int a,int b){return a+b;}
其中,参数列表和返回类型为空的话可以不写省略
结构解析:
(1)[]:外部变量访问方式说明符

下面这段话要细品
"外部变量访问方式说明符”可以是=或&,表示“{ }”中用到的、定义在“{ }”外面的变量在“{ }”中是否允许被改变。
=表示不允许,&表示允许。当然,在“{ }”中也可以不使用定义在外面的变量。“-> 返回值类型”可以省略。
(2)():参数列表
用于在“{ }”函数体中进行运算的参数,一般从外部传入
(3)->:返回值类型,返回值为空的话可以不写,或者也可以在函数体内返回,例如:
[](int a,int b){ return a+b;}
(4){}:函数体,用于书写函数逻辑,函数体内可以使用参数列表传入的参数和使用“[]”从函数外捕获的参数
例1:

上图是表达式的简单用法,lam表达式跟函数的区别其实就是不需要进行额外的定义,lam(a,b)可以理解为等同于调用了一个 “名为lam,参数列表为两个int值,函数返回两个之和的函数”。
如下:
int lam(int a, int b)
{
return a+b;
}
c=lam(a,b);
其实这也是表达式的作用---Lambda 表达式用于定义并创建匿名的函数对象,以简化编程工作。
二.下面举例说明一下[]外部变量访问方式说明符里面不同的表示符号起到的不同作用:
