lambda函数是C++11标准新增的语法糖,也称为lambda表达式或匿名函数。
lambda函数的特点:距离近、简洁、高效和功能强大
实例: [](const int & i)->void {cout
语法:

一、参数列表
参数列表是可选的,类似普通函数的参数列表,如果没有参数列表,()可以省略不写。
与普通函数的不同:
lambda函数不能有默认参数。
所有参数必须有参数名。
不支持可变参数。
二、返回类型
用后置的方法书写返回类型,类似于普通函数的返回类型,如果不写返回类型,编译器会根据函数体中的代码推断出来。
如果有返回类型,建议显式的指定,自动推断可能与预期不一致。
三、函数体
类似于普通函数的函数体。
四、捕获列表
通过捕获列表,lambda函数可以访问父作用域中的非静态局部变量(静态局部变量可以直接访问,不能访问全局变量)。
捕获列表书写在[]中,与函数参数的传递类似,捕获方式可以是值和引用。
以下列出了不同的捕获列表的方式。

1)值捕获
与传递参数类似,采用值捕获的前提是变量可以拷贝。
与传递参数不同,变量的值是在lambda函数创建时拷贝,而不是调用时拷贝。
例如:
size_t v1 = 42;

最低0.47元/天 解锁文章
2406

被折叠的 条评论
为什么被折叠?



