仿函数介绍
仿函数的主要功能是为了搭配STL算法使用,单独使用仿函数的情况比较少。
仿函数(functors)在C++标准中采用的名称是函数对象(function objects)。仿函数主要用于STL中的算法中,虽然函数指针虽然也可以作为算法的参数,但是函数指针不能满足STL对抽象性的要求,也不能满足软件积木的要求–函数指针无法和STL其他组件搭配,产生更灵活变化。仿函数本质就是类重载了一个operator(),创建一个行为类似函数的对象。
对于重载了()操作符的类,可以实现类似函数调用的过程,所以叫做仿函数,实际上仿函数对象仅仅占用1字节,因为内部没有数据成员,仅仅是一个重载的方法而已。实际上可以通过传递函数指针实现类似的功能,但是为了和STL内部配合使用,他提供了仿函数的特性。
#include <iostream>
using namespace std;
// 仿函数
template<typename T>
class Compare {
public:
bool operator()(T a, T b){
return a < b;
}
};
bool cmp(int a, int b) {
return a < b;
}
template<class Function>
void comp(int a, int b, Function func) {
if (func(a, b))
cout << b << " is bigger than " << a << endl;
else
cout << a << " is bigger than " << b << endl;
}
int main() {
int a = 6;
int b = 2;
comp(a, b, Compare<int>());
comp(b, a, cmp);
}

浙公网安备 33010602011771号