std::function的用法
时间: 2023-08-26 08:12:03 浏览: 55
std::function是C++11标准库中的一个模板类,用于存储可调用对象(如函数、函数指针、lambda表达式、绑定器)。它可以使函数指针、函数对象、以及其他可调用对象具有类似于普通函数的行为。
基本用法:
std::function<返回类型(参数类型列表)> 变量名;
例如:
std::function<int(int, int)> add = [](int x, int y) { return x + y; };
int result = add(3, 4);
您还可以使用std::bind来绑定参数,例如:
std::function<int(int)> addTen = std::bind(add, 10, std::placeholders::_1);
int result = addTen(5);
std::function可以存储任何可调用对象,因此它非常灵活,可以用来实现回调函数、支持函数指针、函数对象和lambda表达式的函数等等。
相关问题
std::function用法
std::function 是 C++11 中的一种通用的函数对象类型,可以存储任意可调用对象,包括函数指针、lambda 表达式、绑定函数等。使用方法如下:
1. 定义 std::function 对象:
```
std::function<int(int)> f;
```
2. 将可调用对象赋值给 std::function 对象:
```
f = [](int x) { return x + 1; };
```
3. 调用 std::function 对象:
```
int result = f(2);
```
std::function 允许您在运行时动态选择函数,并且可以简化代码,因为它可以避免使用函数指针和回调函数时的类型转换问题。
std::function的使用方法
`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。