c++ lambda表达式
时间: 2023-07-07 16:43:51 浏览: 124
Lambda 表达式是 C++11 引入的一种新特性,它允许我们定义一个匿名函数,可以在需要时直接使用,而不需要事先声明或定义一个函数。Lambda 表达式通常用于函数对象或函数指针的参数中,以及 STL 算法中。
Lambda 表达式的基本语法如下:
```
[capture list] (parameters) -> return-type { body }
```
其中,capture list 是捕获列表,用于指定 lambda 表达式所使用的外部变量;parameters 是参数列表;return-type 是返回值类型;body 是函数体。
例如,定义一个 lambda 表达式,求两个整数的和:
```c++
auto sum = [](int a, int b) -> int {
return a + b;
};
```
在上面的代码中,我们使用了 auto 关键字来定义一个类型为 lambda 表达式的变量 sum。这个 lambda 表达式有两个参数,都是 int 类型,返回值也是 int 类型,函数体中返回两个参数的和。
Lambda 表达式也可以使用捕获列表来捕获外部变量,例如:
```c++
int x = 10;
auto inc = [x](int a) -> int {
return a + x;
};
```
在上面的代码中,我们定义了一个变量 x,然后在 lambda 表达式中使用了捕获列表来捕获 x 变量。这个 lambda 表达式有一个参数 a,返回值是 int 类型,函数体中返回参数 a 和变量 x 的和。
Lambda 表达式的使用非常灵活,可以根据实际情况自由组合参数、返回值、捕获列表和函数体,是 C++11 中非常有用的特性。
阅读全文