c++ lambda 表达式语法及用法示例
时间: 2023-07-31 12:13:08 浏览: 264
C++ lambda 表达式的语法如下:
```
[capture](parameters) -> return_type { body }
```
其中:
- `capture`:捕获列表,用于指定 lambda 表达式内部可访问的外部变量。捕获列表可以为空,也可以使用`[]`、`[=]`、`[&]`等形式进行指定。
- `[]`:不捕获任何外部变量。
- `[=]`:以值方式捕获所有外部变量。
- `[&]`:以引用方式捕获所有外部变量。
- `[var]`:以值方式捕获变量 `var`。
- `[&var]`:以引用方式捕获变量 `var`。
- `parameters`:参数列表,用于指定 lambda 表达式的参数。
- `return_type`:返回类型,用于指定 lambda 表达式的返回类型。可以省略,编译器会自动推导。
- `body`:函数体,用于实现 lambda 表达式的逻辑。
下面是一个 lambda 表达式的示例:
```cpp
#include <iostream>
int main() {
int x = 5;
int y = 10;
// Lambda 表达式捕获外部变量 x,并接受一个参数 a
auto lambda = [x](int a) {
return x + a;
};
int result = lambda(y);
std::cout << "Result: " << result << std::endl; // 输出: 15
return 0;
}
```
在上面的示例中,lambda 表达式 `[x](int a) { return x + a; }` 捕获了外部变量 `x`,并接受一个参数 `a`。在 lambda 表达式内部,它实现了将 `x` 和 `a` 相加的逻辑,然后通过调用 `lambda(y)` 来计算结果,最后将结果输出到控制台。
请注意,由于 lambda 表达式的返回类型可以自动推导,所以在这个示例中我们没有显式指定返回类型。
阅读全文