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

原文地址:http://www.cnblogs.com/Athenavi/p/16814933.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性