c++lambda表达式捕获参数
时间: 2023-11-24 19:41:17 浏览: 203
C++11 lambda表达式
5星 · 资源好评率100%
Lambda表达式可以用来创建匿名函数,它可以捕获外部的变量。在C++中,捕获参数有两种方式:按值捕获和按引用捕获。
按值捕获会在Lambda表达式创建时复制外部变量的值,并在Lambda函数体内使用这个复制的值。按值捕获的语法是在方括号[]内列出要捕获的变量名。例如:
```cpp
int x = 10;
auto lambda = [x]() { std::cout << x << std::endl; };
lambda(); // 输出10
```
按引用捕获则是引用外部变量,可以直接修改外部变量的值。按引用捕获的语法是在方括号[]内使用&来引用变量。例如:
```cpp
int x = 10;
auto lambda = [&x]() { x++; };
lambda();
std::cout << x << std::endl; // 输出11
```
还可以使用混合方式来捕获参数,即同时按值和按引用捕获。使用混合方式时,被按值捕获的变量必须在方括号[]内使用=标记,并且被按引用捕获的变量必须在方括号[]内使用&标记。例如:
```cpp
int x = 10;
int y = 20;
auto lambda = [=, &y]() { std::cout << x << " " << y << std::endl; };
lambda(); // 输出10 20
```
相应的
阅读全文