如何使用stdfunction来存储和调用lambda表达式?
时间: 2024-09-13 08:13:17 浏览: 39
有效使用Lambda表达式和std::function
`std::function` 是 C++ 标准库中的一个通用函数封装器,它可以存储、复制和调用任何类型的可调用实体。Lambda 表达式是 C++11 引入的一种定义匿名函数对象的便捷方式。使用 `std::function` 来存储和调用 lambda 表达式非常简单,以下是具体的步骤和示例:
1. 首先,需要包含 `<functional>` 头文件,因为 `std::function` 在这个头文件中定义。
```cpp
#include <functional>
```
2. 定义 `std::function` 对象,指定其类型。`std::function` 的类型是可调用对象的签名。例如,如果 lambda 表达式没有参数并且返回类型为 `int`,则可以定义为:
```cpp
std::function<int()> func;
```
3. 将 lambda 表达式赋值给 `std::function` 对象。在赋值时,编译器会自动推导出 lambda 表达式的类型。
```cpp
func = []() -> int { return 42; };
```
4. 通过 `std::function` 对象调用 lambda 表达式。
```cpp
int result = func(); // 调用存储的 lambda 表达式,result 的值为 42
```
完整的示例代码如下:
```cpp
#include <functional>
#include <iostream>
int main() {
// 定义 std::function 对象,无参数,返回 int 类型
std::function<int()> func;
// 将 lambda 表达式赋值给 std::function 对象
func = []() -> int { return 42; };
// 调用存储的 lambda 表达式
int result = func();
std::cout << "The answer is: " << result << std::endl;
return 0;
}
```
输出结果将是:
```
The answer is: 42
```
阅读全文