cpp的Lambda表达式
时间: 2023-10-23 10:14:37 浏览: 46
Lambda表达式是C++11引入的一个新特性,它允许在函数内部定义一个匿名函数,可以在函数内部直接使用,也可以作为函数的参数进行传递。Lambda表达式的语法如下:
```
[capture list] (parameters) -> return type { function body }
```
其中,`capture list`是捕获列表,用于捕获外部变量,可以省略;`parameters`是参数列表,与普通函数的参数列表相同;`return type`是返回类型,可以省略,由编译器推导出来;`function body`是函数体,与普通函数的函数体相同。
Lambda表达式可以使用`auto`关键字来推导返回类型,例如:
```
auto sum = [](int a, int b) { return a + b; };
```
Lambda表达式也可以使用`std::function`来定义函数类型,例如:
```
std::function<int(int, int)> sum = [](int a, int b) { return a + b; };
```
Lambda表达式还可以通过捕获列表来捕获外部变量,例如:
```
int x = 10;
auto add_x = [x](int a) { return a + x; };
```
在捕获列表中,可以使用`&`来按引用捕获变量,例如:
```
int x = 10;
auto add_x = [&x](int a) { x++; return a + x; };
```
Lambda表达式也可以使用`mutable`关键字来使捕获的变量变为可修改的,例如:
```
int x = 10;
auto add_x = [x]() mutable { x++; return x; };
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)