std::bind 用来生成一个可调用对象,其使用的入参是一个可调用对象和一系列占位符。
例子:#include#include using namespace std; int TestFunc(int a, char c, float f) { cout << a << endl; cout << c << endl; cout << f << endl; return a; } int main() { auto bindFunc1 = bind(TestFunc, std::placeholders::_1, 'A', 100.1); bindFunc1(10); //等于TestFunc(10,'A', 100.1) cout << "=================================n"; auto bindFunc2 = bind(TestFunc, std::placeholders::_2, std::placeholders::_1, 100.1); bindFunc2('B', 10); //等于TestFunc(10,'B', 100.1) cout << "=================================n"; auto bindFunc3 = bind(TestFunc, std::placeholders::_2, std::placeholders::_3, std::placeholders::_1); bindFunc3(100.1, 30, 'C'); //等于TestFunc(30,'C', 100.1) return 0; }
以下面这句为例子:
auto bindFunc3 = bind(TestFunc, std::placeholders::_2, std::placeholders::_3, std::placeholders::_1);
这句话表示,bindFunc3 这个可调用对象的第二个参数(std::placeholders::_2)和 TestFunc的第一个参数相匹配(bind入参中除了可调用对象的第一个参数);bindFun3这个可调用对象的第三个参数(std::placeholders::_3)和TestFunc的第二个参数相匹配;bindFun3这个可调用对象的第一个参数(std::placeholders::_1)和TestFunc的第三个参数相匹配。
用途:一般情况下,std::bind 主要和成员函数配合使用,用来获取成员函数的可调用实例。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)