std::bind
时间: 2023-06-22 14:26:54 浏览: 104
C++ STL 内 std::{bind/tuple/function} 简单实现
`std::bind`是C++11标准库中的一个函数模板,用于将函数对象和其参数绑定,并返回一个可调用对象。其函数原型如下:
```c++
template< class F, class... Args >
constexpr /*unspecified*/ bind( F&& f, Args&&... args );
```
其中,`F`表示函数对象类型,`Args`表示参数类型。`std::bind`的第一个参数是要绑定的函数对象,后面的参数是函数对象所需的参数。
`std::bind`返回一个可调用对象,该对象可以像函数一样被调用,调用时将绑定的参数传递给函数对象。
下面是一个简单的示例:
```c++
#include <iostream>
#include <functional>
void print(int a, int b) {
std::cout << a << " " << b << std::endl;
}
int main() {
auto f = std::bind(print, std::placeholders::_1, 2);
f(1); // 输出:1 2
return 0;
}
```
在这个示例中,我们使用`std::bind`将函数对象`print`和参数`2`绑定,生成了一个新的可调用对象`f`。当我们使用`f(1)`调用`f`时,实际上是调用了`print(1, 2)`。注意到我们使用了`std::placeholders::_1`,这是占位符,表示在调用时将会传入的参数。在这个示例中,我们将它绑定到了第一个参数`1`上。
阅读全文