C++ lambda表达式的用法是什么?
时间: 2023-08-04 19:05:00 浏览: 112
C++ lambda表达式是C++11引入的一种新特性,它可以让我们在代码中方便地定义匿名函数。Lambda表达式可以被认为是一种可调用的对象,它可以像函数一样被调用。
Lambda表达式的语法如下:
```
[capture list] (parameters) -> return_type { function body }
```
其中,capture list 可以是一个空列表,或者指定要捕获的变量,用于在函数体中使用;parameters 是参数列表;return_type 是返回类型;function body 是函数体。
Lambda表达式的主要用途是在需要传递函数对象的地方使用,例如:
1. 作为算法函数的参数,例如 std::sort()
2. 作为函数对象的参数,例如 std::for_each()
3. 作为回调函数的参数,例如 std::thread()
Lambda表达式也可以与 STL 的算法函数一起使用,例如:
```
std::vector<int> vec = {1, 2, 3, 4, 5};
std::for_each(vec.begin(), vec.end(), [](int i) {std::cout << i << " ";});
```
这个 lambda 表达式将一个整数作为输入参数,并将其打印到标准输出中。
总之,lambda表达式提供了一种方便的方式来定义匿名函数,可以用于简化代码并提高代码的可读性和可维护性。
相关问题
c++ lambda表达式用法
C++11引入了Lambda表达式,它是一种匿名函数,可以在需要的地方定义并使用。Lambda表达式可以以捕获列表、参数列表和函数体构成。
下面是Lambda表达式的基本语法:
```
[capture list] (parameter list) -> return type {
function body
}
```
其中,捕获列表是可选的,参数列表和函数体也是可选的。返回类型可以省略,编译器会自动推断。
Lambda表达式中的捕获列表可以用来捕获外部变量,例如:
```
int x = 10;
auto func = [x] () {
std::cout << "x = " << x << std::endl;
};
```
这里,我们使用捕获列表 `[x]` 来捕获变量 `x`。Lambda表达式定义了一个函数对象 `func`,它可以访问变量 `x` 的值。
Lambda表达式中的参数列表和普通函数的参数列表一样,例如:
```
auto func = [] (int x, int y) {
return x + y;
};
```
这里,我们定义了一个Lambda表达式 `func`,它接受两个整数参数 `x` 和 `y`,并返回它们的和。
Lambda表达式中的函数体可以是任何合法的C++语句序列,例如:
```
auto func = [] {
std::cout << "Hello, world!" << std::endl;
};
```
这里,我们定义了一个Lambda表达式 `func`,它输出一条消息。
Lambda表达式可以像函数一样调用,例如:
```
int result = func(2, 3);
```
这里,我们调用Lambda表达式 `func`,并将参数 `2` 和 `3` 传递给它。Lambda表达式返回它们的和,结果存储在变量 `result` 中。
Lambda表达式还可以作为函数参数传递,例如:
```
void process(int x, int y, std::function<int(int, int)> func) {
int result = func(x, y);
std::cout << "Result = " << result << std::endl;
}
process(2, 3, [] (int x, int y) {
return x + y;
});
```
这里,我们定义了一个函数 `process`,它接受两个整数参数 `x` 和 `y`,以及一个函数参数 `func`,并将 `x` 和 `y` 传递给 `func`。我们调用 `process` 函数时,使用了一个Lambda表达式作为 `func` 参数,该Lambda表达式将 `x` 和 `y` 相加,并返回结果。最终,`process` 函数将结果输出到控制台。
c++lambda表达式
C++ lambda表达式是一种在C++中定义匿名函数的方式。它类似于函数指针,但具有更简洁的语法和更强大的功能。Lambda表达式可以在需要函数对象的任何地方使用,例如函数参数、算法和STL容器的算法等。
Lambda表达式的基本语法如下:
```
[capture list](parameters) -> return_type {
// 函数体
}
```
其中,capture list是可选的,用于捕获外部变量。可以通过值捕获、引用捕获或混合捕获的方式来捕获变量。parameters是参数列表,可以为空或包含一个或多个参数。return_type是返回类型,可以省略,编译器可以自动推导。
下面是一个简单的示例,演示了lambda表达式的用法:
```cpp
#include <iostream>
int main() {
// lambda表达式,将两个整数相加并返回结果
auto add = [](int a, int b) -> int {
return a + b;
};
int result = add(5, 3);
std::cout << "Result: " << result << std::endl;
return 0;
}
```
运行以上程序,输出结果为:
```
Result: 8
```
这个示例中,我们定义了一个lambda表达式add,它接受两个整数参数,并返回它们的和。我们使用auto关键字将lambda表达式赋值给变量add,并调用它计算结果。
阅读全文