函数对象

来源:互联网 发布:99家居软件怎么样 编辑:程序博客网 时间:2024/06/03 10:30

很多STL算法都使用函数对象–也叫函数符(functor)。函数符是可以以函数方式与( )结合使用的任意对象。这包括函数名,指向函数的指针和重载了( )运算符的类对象( 即定义了函数operator () ( 参数 )的类)。
例如:
class Linear
{
private: double slope;
double y0;
public: Linear(double s1_ = 1, double y_ = 0) :slope( s1_), y0( y_) { }
double operator () (double x) { return y0 + slope * x; }
};

Linear f1;
Linner f2( 2.5, 10.0);
double y1 = f1(12.5); // right-hand side is f1.operator(12.5)
double y2 = f2(0.4); // —– ——— —–f2.operator(0.4)

STL中的定义:
生成器( generator ) 是不用参数就可以调用的函数符。
一元函数( unary function ) 是用一个参数可以调用的函数符。
二元函数( binary function) 是用两个参数可以调用的函数符。

返回bool值的一元函数是谓词。
返回bool值的二元函数是二元谓词。