C++的std::bind
时间: 2024-06-13 22:01:50 AIGC 浏览: 222
std::bind是C++11标准中的一个函数模板,用于将可调用对象(函数、函数指针、成员函数、成员函数指针等)和其参数进行绑定,生成一个新的可调用对象。通过std::bind可以实现对函数参数进行延迟绑定、部分参数绑定、参数重排等功能,从而实现更加灵活的函数调用方式。
使用std::bind可以将一个函数包装成一个可调用对象,例如:
```cpp
#include <iostream>
#include <functional>
void foo(int a, int b, int c)
{
std::cout << a << " " << b << " " << c << std::endl;
}
int main()
{
auto f1 = std::bind(foo, 1, 2, 3);
f1(); // 输出1 2 3
auto f2 = std::bind(foo, std::placeholders::_1, 2, std::placeholders::_2);
f2(1, 3); // 输出1 2 3
return 0;
}
```
在上述例子中,我们使用std::bind将函数foo包装成了两个可调用对象f1和f2。f1是一个无参可调用对象,它会调用foo函数并传入参数1、2和3;f2是一个二元可调用对象,它会将第一个参数绑定到foo的第一个参数位置,第二个参数绑定到foo的第三个参数位置,而第二个参数位置仍然是未绑定的,需要在调用时传入。
阅读全文
相关推荐










