什么是Lambda函数
Lambda函数也叫Lambda表达式,是匿名函数,就是没有名字的函数,和传统的函数不一样。Lambda表达式是C++11中引入的新概念,用于定义并创建匿名的函数对象。首先看下Lambda表达式的基本结构。
[捕捉列表] (参数) mutable ->返回值类型 {函数体}
1、 [ ],标识一个,Lambda匿名函数的开始,这个必须有,不能省略,函数对象参数是传递给编译器自动生成的函数对象类的构造函数的。函数对象参数只能使用到Lambda定义为止Lambda所在的作用域范围内可见的局部变量,包括Lambda所在类的this。函数对象参数有以下形式
a) 空,没有使用任何的函数对象参数
b) =,函数体内使用Lambda所在范围内的可见局部变量包括所在类的this的传值方式,相当于编译器给Lambda所在地的所有局部变量复制一份给Lambda函数
c) &,函数体内使用Lambda所在范围内的可见局部变量包括所在类的this的引用方式,相当于编译器给Lambda所在地的所有局部变量引用一份给Lambda函数
d) this,函数体内可以使用Lambda所在内的成员变量
e) a,不是字母,而是指具体一个变量a,那么Lambda内拷贝一个a使用
f) &a,Lambda内引用a
g) a,&b,拷贝a,引用b
h) =,&a,&b,除ab引用,其余拷贝
i) &,a,b。除ab拷贝,其余引用
2、 函数参数,这个跟常规函数一样。
3、 mutatble,修改关键字,再对应位置mutatble关键字,才能修改函数对象参数。否则报错。可以有,也可以没有,但有才能修改。lambda默认是const,也就是不能修改本地变量。
4、 ->return-type返回值的方式,既然是函数就可能有返回值,那么->就是有返回值的函数标志。
5、 函数体,跟常规函数一样。