一、作用
std::bind用来将可调用对象与其参数一起进行绑定。绑定后的结果可以使用std::function进行保存,并延迟调用到任何我们需要的时候。通俗来讲,它主要有两大作用:
(1)将可调用对象与其参数一起绑定成一个仿函数。
(2)将多元(参数个数为n,n>1)可调用对象转换为一元或者(n-1)元可调用对象,即只绑定部分参数。
二、语法格式
// 绑定非类成员函数/变量 auto f = std::bind(可调用对象地址, 绑定的参数/占位符); // 绑定类成员函/变量 auto f = std::bind(类函数/成员地址, 类实例对象地址, 绑定的参数/占位符);
三、范例
#include <iostream> #include <functional> using namespace std; void callFunc(int x, const function<void(int)>& f) { if (x % 2 == 0) { f(x); } } void output(int x) { cout << x << " "; } void output_add(int x) { cout << x + 10 << " "; } int main(void) { // 使用绑定器绑定可调用对象和参数 auto f1 = bind(output, placeholders::_1); for (int i = 0; i < 10; ++i) { callFunc(i, f1); } cout << endl; auto f2 = bind(output_add, placeholders::_1); for (int i = 0; i < 10; ++i) { callFunc(i, f2); } cout << endl; return 0; }