《STL源码剖析》——第七、八章:仿函数与接配器
第七章:仿函数 7.1 、仿函数(函数对象)概观 STL仿函数的分类,若以操作数(operand)的个数划分,可分为一元和二元仿函数,若以功能划分,可分为算术运算 ( Arithmetic)、关系运算 ( Rational)、逻辑运算 ( Logical)三大类。任何应用程序欲使用STL内建的仿函数,都必须含人<functiona1>头文件,SGI则将它们实际定义于<st1_function.h>文件中。以下分别描述。 重载 () 所以函数的对象 使用()像函数调用 是类 而不是普通的函数 内部记录状态: 作为类型 与模板进行配合使用 1、函数对象通常不定义构造函数和析构函数,所以在 构造和析构时不会发生 任何问题,避免了函数调用的运行时问题。 2、函数对象超出普通函数的概念,函数对象可以有自己的状态 3、函数对象 可内联编译,性能好 。用 函数指针几乎不可能 4、模版函数对象使函数对象具有通用性,这也是它的优势之一 7.2 、可配接( adaptable )的关键 unary_function unary_function用来呈现一元函数的参数型别和回返值型别。其定义非常简单: binary_function binary_function 用来呈现二元函数的第一参数型别、第二参数型别,以及回返值型别。其定义非常简单: 7.3 、算术类( Arithmetic )仿函数