std::function的使用方法
时间: 2023-07-23 18:11:57 浏览: 43
`std::function` 是一个通用的函数封装器,可以用来存储、复制和调用任何可调用对象(函数、函数指针、成员函数指针、lambda表达式等)。以下是 `std::function` 的基本使用方法:
1. 创建 `std::function` 对象:
```cpp
std::function<返回值类型(参数类型)> func;
```
其中,`返回值类型` 和 `参数类型` 是可调用对象的返回值和参数类型,可以是任意类型,包括基本类型、自定义类型、指针类型等。
2. 绑定可调用对象:
```cpp
func = 可调用对象;
```
其中,`可调用对象` 可以是函数名、函数指针、成员函数指针、lambda表达式等。
3. 调用 `std::function` 对象:
```cpp
func(参数);
```
其中,`参数` 是可调用对象的参数,可以是任意类型的值。
以下是一个示例代码,演示了如何使用 `std::function` 封装一个 lambda 表达式,并调用它:
```cpp
#include <iostream>
#include <functional>
int main() {
std::function<int(int)> func = [](int x) { return x * x; };
std::cout << func(5) << std::endl; // 输出 25
return 0;
}
```
上面的代码中,首先创建了一个 `std::function<int(int)>` 对象 `func`,它可以存储一个返回值为 `int`,参数为 `int` 的可调用对象。然后,将一个 lambda 表达式 `[](int x) { return x * x; }` 绑定到 `func` 上,这个 lambda 表达式表示求平方。最后,调用 `func(5)`,输出结果为 25。