SGI-STL简记(十)-仿函数(函数对象)

仿函数或函数对象(functional):

    仿函数也即函数对象,一种具有函数特质的对象,其主要用于STL的算法中搭配使用,使得算法实现更为灵活;
    此外,仿函数也类似于迭代器,也需要提供必要的相应型别,以支持适配;
    仿函数的相应型别主要有:函数参数的型别、函数返回值型别;
    STL中已提供了部分仿函数类(已定义好型别),可基于这些仿函数类实现自定义的仿函数,可方便地获取到型别,支持适配能力。
    为了实现自定义的仿函数,需实现重载operator()。
    STL已提供两类操作数的仿函数模板类,一元的unary_function、二元的binary_function以及其他按照功能划分的算术、关系、逻辑仿函数类。

stl_function.h :
    
    unary_function:一元仿函数模板类,即提供一个参数型别支持和一个返回值型别。
    binary_function:二元仿函数模板类,可提供两个参数型别和一个返回值型别。
    
    基于unary_function实现的内置仿函数模板类,部分如:
        negate<T>:取反;
        unary_negate<T>:由外部仿函数对象调用来判断的取反;
        logical_not<T>:逻辑非;
        binder1st<T>:绑定一个参数到由仿函数对象调用的第一个位置(即f(value, x));
        binder2nd<T>:绑定一个参数到由仿函数对象调用的第二个位置(即f(x, value));
        unary_compose<T1, T2>: 一元复合组合调用由仿函数调用(即f1(f2(x)));
        binary_compose<T1,T2,T3>:二元复合组合调用由仿函数调用(即f1(f2(x), f3(x)));
        pointer_to_unary_function<Arg, Res>:由外部传入的指针地址调用(即addrPtr(x));
        mem_fun_t、const_mem_fun_t、mem_fun_ref_t、const_mem_fun_ref_t:成员函数绑定调用。
    
    基于binary_function实现的内置仿函数模板类,部分如:
        plus<T>:相加操作;
        minus<T>:相减操作;
        multiplies<T>:相乘操作;
        divides<T>:相除操作;
        modulus<T>:求余操作;
        equal_to<T>、not_equal_to<T>、greater<T>、less<T>、greater_equal<T>、less_equal<T>:关系操作;
        logical_and<T>、logical_or<T>:逻辑操作;
        binary_negate<T>:二元取反,由外部仿函数对象调用;
        pointer_to_binary_function<Arg1, Arg2, Res>:由外部传入的指针地址调用(即addrPtr(x, y));
        mem_fun1_t、const_mem_fun1_t、mem_fun1_ref_t、const_mem_fun1_ref_t:成员函数绑定调用。

    此外还有const属性剔除模板类,如:
      _Constant_void_fun、_Constant_unary_fun、_Constant_binary_fun以及基于此三者继承而来的仿函数模板类,如:

        constant_void_fun、constant_unary_fun、constant_binary_fun。

    

 

posted @ 2019-10-13 13:02  浩月星空  阅读(210)  评论(0编辑  收藏  举报