仿函数介绍

仿函数的主要功能是为了搭配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);
}
posted @ 2024-04-14 11:41  飞花阁  阅读(23)  评论(0)    收藏  举报
//雪花飘落效果