std::function 用法
时间: 2024-09-02 08:04:20 浏览: 75
C++ 11 std::function和std::bind使用详解
`std::function`是C++11引入的一个通用的函数封装器,它可以存储、复制和调用任何类型的可调用实体(例如函数、lambda表达式、函数对象或者指向成员函数指针)。它提供了一种灵活的方式来处理各种形式的函数调用,并且可以被用作回调、绑定参数等。
`std::function`使用示例:
```cpp
#include <functional>
// 函数
void normal_function() {
// ...
}
// 函数对象
struct functor {
void operator()() {
// ...
}
};
int main() {
// 1. 存储普通函数
std::function<void()> func1 = normal_function;
func1(); // 调用普通函数
// 2. 存储函数对象
std::function<void()> func2 = functor();
func2(); // 调用函数对象
// 3. 存储lambda表达式
std::function<void()> func3 = []() {
// ...
};
func3(); // 调用lambda表达式
// 4. 作为回调传递
std::function<void()> callback = normal_function;
std::thread t1(callback);
t1.join();
// 5. 绑定参数
auto binded_func = std::bind(normal_function);
binded_func();
}
```
`std::function`的使用方法包括:
- 存储普通函数指针。
- 存储lambda表达式。
- 存储函数对象。
- 作为回调函数传递给其他函数或线程。
- 绑定函数参数。
使用`std::function`时,需要包含头文件`<functional>`。
阅读全文