Lambda函数

  • 2022 年 10 月 21 日
  • 筆記

什么是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、 函数体,跟常规函数一样。