首页 新闻 会员 周边

stl里的一些问题,不是很清楚。

0
悬赏园豆:50 [已解决问题] 解决于 2012-03-13 10:54

函数对象是什么,为什么出现这种概念?主要作用是什么呢?binder1st,binder2nd又有什么作用,如何使用呢?麻烦讲解一下,十分感谢。

memory.sad的主页 memory.sad | 初学一级 | 园豆:155
提问于:2012-03-12 23:05
< >
分享
最佳答案
0

函数对象也称为仿函数,主要是为了做配接使用的,因为在算法的设计过程中,我们会发现其本质往往是不变的(例如排序算法的思想),变化的除了数据之外还有操作(例如排序中不一定是比较大小,也可以是两两之间满足某种关系),仿函数就是为了这种情况产生的,它替代原来需要函数指针的地方,把这种操作或者策略传给算法,使得算法抽象性更高,也就更通用。
为什么不用函数指针?很简单的解释是抽象性不够,更进一步说是它无法配接,也就是可以将操作配接在一起变换为更复杂的操作(例如compose和bind1st等等方法),仿函数则可以轻松实现这些配接,使得其功能异常强大。还有一点就是你无法定义参数类型为自身的函数指针类型.

binder1st,binder2nd是为了进行仿函数与仿函数之间的适配,这部分内容可以看这篇随笔:

[cpp][g.p] STL中的约束器相关总结


收获园豆:50
zsounder | 老鸟四级 |园豆:2819 | 2012-03-13 00:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册