Lambda 表达式

无参数无返回值无捕获Labmda表达式

lambda表达式是C++11中引入的一项新技术,利用lambda表达式可以编写内嵌的匿名函数,用以替换独立函数或者函数对象,并且使代码更可读。从广义上说,lamdba表达式产生的是函数对象。

Lambda 表达式

在()中加入返回值,在->后加入返回值

如果需要参数,那么就要像函数那样,放在圆括号里面,如果有返回值,返回类型要放在->后面,即拖尾返回类型,也可以忽略返回类型,lambda会帮你自动推断出返回类型。

Lambda 表达式

在[]中捕获其封装作用域中变量

前面的方括号用来定义捕捉模式以及变量,我们又将其称为lambda捕捉块。lambda表达式的大致原理为:每当你定义一个lambda表达式后,编译器会自动生成一个匿名类(这个类重载了()运算符),我们称为闭包类型。那么在运行时,这个lambda表达式就会返回一个匿名的闭包实例,其实一个右值。闭包的一个强大之处是其可以通过传值或者引用的方式捕捉其封装作用域内的变量,前面的方括号就是用来定义捕捉模式以及变量

Lambda 表达式

 

Lambda 表达式

参考文档:https://www.jianshu.com/p/d686ad9de817