• 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。

        
  • 相关阅读:
    TSQL Beginners Challenge 1
    SQL拾遗
    简易实体生成方式
    CTE-递归[2]
    编号处理
    行列转换/横转竖
    OUTPUT、Merge语句的使用
    关于SQL IO的一些资料
    对左值(lvalue)和右值(rvalue)的两种理解方式
    跨平台判断64位和32位开发的一些宏定义
  • 原文地址:https://www.cnblogs.com/haomiao/p/11666033.html
Copyright © 2020-2023  润新知