函数适配器问题
二元函数适配器bind2ndz在算法中如下使用count_if(v1.begin(),v1.end(),bind2nd(less<int(),12));
那么这一算法的执行流程是否是这样的
1。根据定义bind2nd(less<int(),12)
template<class _Bfn, class _Ty> inline
binder2nd<_Bfn> bind2nd(const _Bfn& _X, const _Ty& _Y)
{return (binder2nd<_Bfn>(_X,
_Bfn::second_argument_type(_Y))); }
首先执行return (binder2nd<_Bfn>(_X,_Bfn::second_argument_type(_Y)));
这里的类型_Bfn 应该实例化成binary_function;_X就应该是less<int()
2。执行binder2nd的构造函数,构造一个binder2nd对象
binder2nd(const _Bfn& _X,const _Bfn::second_argument_type& _Y): op(_X), value(_Y){}
3.返回binder2nd对象到count_if(v1.begin(),v1.end(),bind2nd(less<int(),12))算法中,进行循环。
4。上述过程在v1.begin(),v1.end()循环中,是执行一次,还是循环中每一次都要重复以上过程
5。那位老师能给我一个学习mem_fun,ptr_fun,并能提供例题的参考网站