仿函数概述:
指一个类看上去像个函数,具有类似函数的行为,即是仿函数类。
仿函数实现方式:在类中加入重载括号运算符的方法 --> operator() ,示例如下:
#include <iostream>
class Example{
public:
int operator()(int a, int b){
return a > b ? a : b;
}
};
int main(){
Example max;
std::cout << "max:" << max(10, 20) << std::endl;
std::cout << "临时对象:" << Example()(20, 30) << std::endl;
return 0;
}
仿函数分类:
参数个数划分:
一元仿函数、二元仿函数;
功能划分:
算术运算、关系运算、逻辑运算。
仿函数优点:
1. 由于仿函数其实是一个对象,所以它能访问类中的其他成员,所以比较一般函数来说非常灵活;
2. 仿函数的实现仅需要实现operator(),而相应要实现函数,就要用到的一些变量,可能产生公共的全局变量。函数就需要维护这些全局变量,而仿函数就不需要;
3. 面对对象能够减少代码的耦合,仿函数也就有这一特点,所以它的健壮性,复用性,维护性都较强;
4. 仿函数,还可以用关联,聚合,依赖的类之间的关系,与用到他们的类组合在一起,这样有利于资源的管理;
5. 仿函数的执行速度较快。