函数适配器

在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<int, double, void>{..}

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()函数;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值