写在前面
STL当中的仿函数
主要内容
函数对象和仿函数
仿函数是早期的命名,采用的新的名称是函数对象。
函数对象就是一种具有函数特质的对象。
这种东西在调用者可以像函数一样被调用,在被调用者则以对象所定义的()操作符扮演函数的实质角色。
仿函数的作用
第一个版本表现在最常用的某种运算
第二个版本表现在最泛化的演算流程,允许用户已模板参数来指定所要采取的策略。
实现第二种版本的方式
- 函数指针
- 仿函数
函数指针可以达到要求但是为什么要用仿函数呢?因为函数指针不能满足STL对于抽象性的要求,函数指针无法和其他的STL组件搭配。
仿函数本质
仿函数就是行为类似函数的对象。其类别必须重载()操作符。
可配接的关键
仿函数的相应的型别主要用来表现函数的参数和返回值类型,
我们可以提取这些信息相应的型别都只是一种typedef
所有的操作都在编译器完成没有任何的执行效率的损失不带来任何的负担。
STL当中定义了两个类分别代表一元仿函数和2元仿函数,STL不支持3元和多元仿函数。
其中没有任何的数据成员和成员函数,有的只有型别的嵌套定义typedef。
任何仿函数只需要依据个人需求继承其中的一个c