std::bind是什么
时间: 2023-11-16 07:54:32 浏览: 77
C++11中lambda、std::function和std:bind详解
std::bind是C++11中的一个函数模板,它可以将一个可调用对象(函数、函数指针、成员函数、成员函数指针等)和其参数绑定起来,生成一个新的可调用对象。这个新的可调用对象可以在后续的调用中直接使用,而不需要再传递参数。std::bind的语法如下:
```c++
template<class F, class... Args>
std::bind(F&& f, Args&&... args);
```
其中,F表示要绑定的可调用对象,Args表示要绑定的参数。std::bind返回一个新的可调用对象,它的参数个数和类型由原来的可调用对象和绑定的参数决定。
举个例子,假设有一个函数:
```c++
void foo(int a, int b, int c);
```
我们可以使用std::bind将它的第一个参数绑定为1,第二个参数绑定为2,生成一个新的可调用对象:
```c++
auto new_foo = std::bind(foo, 1, 2, std::placeholders::_1);
```
这个新的可调用对象可以像原来的函数一样调用,只需要传递最后一个参数即可:
```c++
new_foo(3); // 相当于调用 foo(1, 2, 3);
```
阅读全文