函数适配器

在for_each()函数的第三个参数位置,将函数对象于给定参数等两个参数绑定为一个参数;那么似乎就是使用继承,参与构造了仿函数对象;那么常用的函数适配器有两个,bind2nd(),bind1st();

for_each(v.begin(),v.end(),bind2nd(Printer(),given));

bind2nd():将given绑定至operator()函数第二个参数位置;

函数原型:bind2nd<_Fn,T>(const _Fn& _Fnc,const T&_Right);

bind1st():将given绑定至operator()函数第一个参数位置;

bind2nd<_Fn,T>(const _Fn& _Fnc,const T&_Left);

我们可以看到bind2nd也是模板,这里将会创建相应的对象;

两者仅参数绑定位置不同,

参数绑定后,仿函数的类需要以public方式继承类模板binary_function<形参类型1,形参类型2,返回值类型>;

例:class Printer : public binary_function{..}

operator()函数为二元(2个参数)时,继承二元函数的父类binary_function(_Arg1 arg1, _Arg2 arg2, _Result res);
operator()函数为一元(1个参数)时,继承一元函数的父类unary_function(_Arg arg, _Result res)。
————————————————
版权声明:本文为CSDN博主「NewsomTech」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/newson92/article/details/114156359

C++ STL(十一):适配器(函数对象适配器、取反适配器、函数指针适配器、成员函数适配器)_NewsomTech的博客-CSDN博客

它使用了接口;并需要重写父类的operator()函数;

你可能感兴趣的:(数学建模,java,开发语言)