std::function 和 bind的用法举例
时间: 2023-10-18 08:04:43 浏览: 115
C++11中lambda、std::function和std:bind详解
1. 使用 std::function 实现函数回调
```c++
#include <iostream>
#include <functional>
void foo(int x, int y, std::function<int(int, int)> callback) {
int result = callback(x, y);
std::cout << "The result is " << result << std::endl;
}
int add(int x, int y) {
return x + y;
}
int main() {
foo(3, 4, add); // 直接传递函数指针
foo(3, 4, [](int x, int y) { return x * y; }); // 使用 lambda 表达式
return 0;
}
```
2. 使用 std::bind 绑定函数和参数
```c++
#include <iostream>
#include <functional>
void foo(int x, int y, int z) {
std::cout << "x=" << x << ", y=" << y << ", z=" << z << std::endl;
}
int main() {
auto f = std::bind(foo, 1, 2, 3); // 绑定函数和参数
f(); // 直接调用
auto g = std::bind(foo, std::placeholders::_1, 2, std::placeholders::_2); // 绑定部分参数
g(1, 3); // 传递剩余参数
return 0;
}
```
阅读全文