二元函数与bind1st/bind2nd

1 篇文章 0 订阅

最近看到bind1st,感觉很好玩的一个模板函数。其定义如下:

 

 

 

于是,自己查资料,google,找到了一点线索。弄了半个明白。~

 

它的作用就是预先绑定一个参数,是二元算子变为一元(有些地方需要,比如,遍历容器中每个元素对其进行操作时,那参数肯定只有一个。)

我找到了两种方法,来实现这个绑定过程。一个是继承binary_function类,实现()操作符。这样就可以用此类的对象作为bind1st的第一个参数了。看定义也知道,它要求第一个参数有first_argument_type这个域。而binary_function结构体里包含有此域,其定义如下:

 

还有一种方法是使用pointer_to_binary_function进行转换,其定义如下:

 

好了,做个例子试试:

 

 

输出结果应该为:

 

 

好了,现在可以绑定一个参数了,到时候使用二元算子只需一个参数即可。差点忘了,还有一个问题,这只是绑定第一个参数。STL还是比较“明智”的,他当然也考虑到了有绑定第二个参数的情况,于是,你可以试试bind2nd~~

 

参考文章:

http://www.cnblogs.com/shootingstars/archive/2007/08/17/860042.html

http://blog.csdn.net/zxb_zxb/archive/2009/09/17/4563011.aspx

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值