C++11之function和bind
2021-07-15 01:06
标签:review preview std family int names 通过 name mem function、bind是tr1里的特性,已被集成到C++0x/C++11 1、使用tr1 头文件: 2、使用C++0x/11 头文件: bind将已有函数 与 特定参数绑定到一起,返回为新的可调用对象function供以使用 现有一个减法计算函数: 使用bind把calcSub与实参10、3绑定起来,于是产生了一个 于是,调用fun: 即bind产生了 那么: placeholders::_N表示生成的可调用对象的第N个参数 即bind产生了 于是 假如有类: 则想绑定成员函数calcSub,则不能忘记calcSub的第一个参数是MyClass* this _2声明了:fun的第2个参数作为memfun的第二个参数(int) 那么: C++11之function和bind 标签:review preview std family int names 通过 name mem 原文地址:https://www.cnblogs.com/cppprogamming/p/9537537.html使用方法
std::tr1::function
std::tr1::bind
std::tr1::placeholders::_N
std::function
std::bind
std::placeholders::_N
作用
示例
using namespace std::tr1;
using namespace std::tr1::placeholders;
int calcSub(int a, int b) { return a - b; }
1、绑定所有参数
functionint()> fun = bind(&calcSub, 10, 3);
int(void)
类型的函数(可调用对象)fun()
等价于calcSub(10,3)
2、绑定若干参数
functionint(int)> fun = bind(&calcSub, 10, _1);
calcSub(10, _1)
的可调用对象fun
其中,占位符_1
表示:fun
的第1个参数将作为calcSub的第二个参数
于是fun
有一个参数,类型=calcSub第二个参数的类型=intfun(3)
等价于calcSub(10,3)
functionint(int,int)> fun = bind(&calcSub, _2, _1);
calcSub(_2,_1)
的可调用对象fun
并通过占位符声明:fun的第2个参数将作为calcSub的第一个参数(int),fun的第1个参数将作为calcSub的第二个参数(int)fun
有两个参数,且类型均为int
那么:fun(10,3) = calcSub(3,10)
3、bind也可以绑定类成员函数
class MyClass {
public:
void memfun(int a, string b) { ... }
};
MyClass ins;
functionvoid(string,int)> fun = bind(&MyClass::memfun, &ins, _2, _1);
_1声明了:fun的第1个参数作为memfun的第三个参数(string)
于是,fun参数为string,int
func("xxx", 10)等价于ins.calcSub(10, "xxx");
上一篇:python的数字