美文网首页
STL binder自定义functor

STL binder自定义functor

作者: 王晓宇_xiaoyuwang | 来源:发表于2017-03-30 17:15 被阅读0次

    程序员自定义的functor要使用bind1st bind2nd函数,需要提供binder接口。如何提供这个接口,就要继承自unary_function<> binary_function

    user defined functors must satisfy 3 requirements to use bind1st and bind2nd
    1.include functional
    2.operator must be const
    3.inherited from binary_function

    顾名思义,bind1st绑定functor的第一个实参,bind2nd绑定第二个实参。
    示例: 删除vector中所有能被某数整除的元素

    struct Del  : public binary_function<int, int, bool> {
        bool operator()(const int& x, const int& del) const { return x % del == 0 ? true : false;}
    };
    ...
    vec.erase(remove(vec.begin(), vec.end(), bind2nd(Del(), 3)), vec.end());
    ...
    

    注意:重载必须指明 const

    bool operator() (const T& lhs, const T& rhs) const{}
    在STL对binder的实现中,要求不能改变实参。只有符合const操作的自定义functor才能使用bind1stbind2nd绑定参数

    相关文章

      网友评论

          本文标题:STL binder自定义functor

          本文链接:https://www.haomeiwen.com/subject/hndpottx.html