概述
先来看下基础概念。lamda表达式的一般语法如下:
[capture] (parameters) -> return type { function body }
来分析下lamda表达式的基本组成部分,如下几点。
1.捕获子句:
使用[capture]来捕获外部变量。可以是:
- [=] : 通过值捕获所有外部变量
- [&] :通过引用捕获所有外部变量
- [variable] :通过值捕获特定变量
- [&variable] :通过引用捕获特定变量
2.参数列表
Lambda 表达式可以有零个或多个参数,格式与普通函数参数列表相同。
3.箭头
使用 -> 来分隔参数列表和函数体。如果指定了返回类型,则放在箭头之前。
4.函数体:
Lambda 表达式的主体,可以包含一条语句或一个代码块。
例子
来个简单的例子:
auto Add = [](int a, int b) {
return a + b;
};
std::cout << Add(1, 2) << std::endl;
再来看下带捕获参数的例子,
int c = 12;
int d = 30;
auto Add = [c, d](int a, int b)->int {
cout << "d = " << d << endl;
return c;
};
d = 20;
std::cout << Add(1, 2) << std::endl;
下边这个带的是捕获引用的,
int c = 12;
int d = 30;
auto Add = [&d](int &a, int &b)->int {
a = 11;
b = 12;
cout << "d = " << d << endl;
return a + b;
};
d = 20;
std::cout << Add(c, d) << std::endl;
小结
本篇主要写了lamda表达式的例子,详细的描述了lamda的语法规则以及使用方式,相信在开发中经常遇到。有兴趣,来一起学习学习。好了,本篇结束。