词条 | STL约束器 |
释义 | 本身属于适配器,依赖于STL函数对象基类:unary_function,binary_function. STL约束器:属于某种函数对象,通过将一个参数约束到某个值,使我们可以将两个参数的函数对象当做一个参数的函数对象来使用。这种通过约束一个参数而形成的组合是很常见,很有用的,也是很少令人生厌的,标准库专门提供了一个专门的标准类来支持做到这一点。 template<class BinOp> class binder2nd :public unary_function<typename BinOp::first_argument_type, typename BinOp::result_type>{ protected: BinOp op; typename BinOp::second_argument_type arg2; public: binder2nd(const BinOp&x,const typenmae BinOp::second_argument_type&v) :op(x),arg2(v){} result_type operator()(const argument_type&x )const {return op(x,arg2);} }; template<class BinOp,class T> binder2nd<BinOp>bind2nd(const BinOp&op,const T&v) { return binder2nd<BinOp>(op,v); } 以上的binder2nd本身也是要当做一个一元谓词来使用的。它在 将一个拥有两个参数的函数对象B 约束其中一个参数的过程中起到一个桥梁作用。在起这个作用的过程中,它的两个参数作为输入,其中一个输入提供实际需要用到得 含有两个参数的函数对象B,另外一个参数为 这个B提供那个受控的参数值。 而罪恶的一切 都由result_type operator()(const argument_type&x )const {return op(x,arg2);} 这句来完成的。最终将完成将 含两个参数的函数对象B当做含一个参数的函数对象使用。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。