函数对象的函数适配器

函数对象的函数适配器
标准库还提供了一组函数适配器用来特殊化或者扩展一元和二元函数对象适配器是
一种特殊的类它被分成下面两类
1 绑定器binder binder 通过把二元函数对象的一个实参绑定到一个特殊的值上
将其转换成一元函数对象例如为了计数一个容器中小于或等于10 的元素的个数我们可
能会向count_if()传递一个less_equal 函数对象以及一个被绑定为10 的实参在下一节中
我们将了解怎样实现这种方法
2 取反器negator negator 是一个将函数对象的值翻转的函数适配器例如为了
计数一个容器中所有大于10 的元素的个数我们可以向count_if()传递less_equal 函数对象的
negator 该函数对象有一个实参被绑定为10 当然在这种情况下直接传递greater 对象
的binder 并把一个实参绑定为10 更为简洁明了
C++标准库提供了两种预定义的binder 适配器bind1st 和bind2nd 正如你所预料的
bind1st 把值绑定到二元函数对象的第一个实参上bind2nd 把值绑定在第二个实参上例如
为了计数容器中所有小于或等于10 的元素的个数我们可以这样向count_if()传递
count_if( vec.begin(), vec.end(),
bind2nd( less_equal<int>(), 10 ));
标准库提供了两个预定义的negator 适配器not1 和not2 同样正如你所料想的not1
翻转一元预定义函数对象的真值而not2 翻转二元谓词函数的真值为了取反less_equal 函
数对象的绑定我们可以这样写
count_if( vec.begin(), vec.end(),
not1( bind2nd( less_equal<int>(), 10 )));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值