仿函数
a. 目的:!!!要将某组操作作为参数(也是函数指针的目的),有两种方法:
a) 将这组操作设计为函数,然后传函数指针;
b) 将这组操作设计为仿函数,传仿函数对象。
b. 仿函数法概念:重载了 ( ) 运算符的类。它是一个类
c. stl仿函数定义:stl中定义了一元、二元仿函数。凡自定义的仿函数继承了一元、二元仿函数,就会成为它们那种类型,由此就可以被stl中的算法,容器等等所接纳(那些算法和容器都是以一元、二元仿函数为参数的)。一元、二元仿函数中不定义成员变量和成员函数,只是定义参数类型和返回值类型。实例如下:
一元仿函数
Template< calss Arg , class Result>
Struct unary_function{
Typedef Arg argument_type;
Typedef Result result_type;
};
Template< class T>
Struct Myfunction:public unary_function<T,T>{
//继承了一元仿函数就可以成为一元仿函数类型,从而被stl其他部件所接纳
T operator( ) (const T& x) const{
Return -x;
}
};
不使用函数指针来代替仿函数的原因:大概是因为仿函数作为类具有继承性,子类同时也是父类类型,这样作为参数就方便很多了。