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。