zoukankan      html  css  js  c++  java
  • 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。

        
  • 相关阅读:
    OpenCV 2.4.11 VS2012 Configuration
    [LeetCode] 11. Container With Most Water 装最多水的容器
    Android rxjava2的disposable
    Android在应用设置里关闭权限,返回生命周期处理
    Android 使用greenDAO 3.2.2 操作外部数据库
    Android中intent相关,setFlag(xx);
    Android 关于Acitivity 的setFlag以及launchmode的总结
    GreenDao3.0新特性解析(配置、注解、加密)
    Android RecycleView实现混合Item布局
    Android各大手机系统打开权限管理页面
  • 原文地址:https://www.cnblogs.com/haomiao/p/11666033.html
Copyright © 2011-2022 走看看