std::bind什么意思
时间: 2023-12-15 10:03:43 浏览: 135
C++ 11 std::function和std::bind使用详解
std::bind是C++11标准库中的一个函数模板,用于将函数和其参数绑定到一个函数对象上。这个函数对象可以在稍后的时间点上被调用,就像调用原始函数一样。std::bind的返回类型是一个未指定类型T的函数对象,这个类型T满足以下条件: std::is_bind_expression::value == true。在使用std::bind时,第一个参数是函数名或函数指针,后面的参数是函数的参数,可以使用占位符_1、_2、_3等来表示参数的位置,也可以直接传入参数值。下面是一个std::bind绑定普通函数的例子:
```c++
#include <iostream>
#include <functional> //for std::bind
using namespace std;
double my_divide (double x, double y) {return x/y;}
int main() {
using namespace std::placeholders; //for _1
auto fn_half = std::bind (my_divide,_1,2);
std::cout << fn_half(10) << '\n'; // 输出:5
return 0;
}
```
在这个例子中,我们使用std::bind将my_divide函数和参数2绑定到一个函数对象fn_half上,然后调用fn_half(10)就相当于调用my_divide(10, 2),输出结果为5。
阅读全文