STL源码分析—仿函数 & 配接器
仿函数就是函数对象。就实现观点而言,仿函数其实就是一个“行为类似函数”的对象。为了能够“行为类似函数”,其类别定义中必须自定义(或说改写。重载)function call 运算子(operator()),拥有这样的运算子后,我们就可以在仿函数的对象后面加上一对小括号,以此调用仿函数所定义的operator()。仿函数作为可配接的关键因素。
配接器在STL组件的灵活组合运用功能上,扮演着轴承。转换器的角色,adapter的定义:将一个class的接口转换为另一个class的接口,使原本因接口不兼容而不能合作的classes,可以一起运作。STL所提供的各种配接器中,改变仿函数接口者,我们成为function adapter,改变容器接口者,我们成为container adapter,改变迭代器接口者,我们成为iterator adapter.
STL体统的两个容器queue和stack,就是一个配接器,修饰deque的接口而成就出另一种容器风貌,这两个container adapters。
综述:
所谓泛型就是类型无关的意思,这个思想在STL中被广泛使用。特化偏特化是为了更好的让有些模板高效工作而存在的,就好像是另一个模板,属于模板的特殊表现形式。仿函数就是类似于函数的对象。适配器就是再次封装了一下接口,使得一样的底层实现表现出不通过的对外接口。