1,仿函数只为算法来服务。仿函数,由名字可以确定是模仿函数的意思,因此必须要重载()。这样创建出来的对象是一个对象,像一个函数,因此叫做仿函数。
2,struct plus:public binary_function<T, T, T>继承模板库的函数,因为这是可以使用适配的条件,有些时候不继承也可以完成某些功能,不继承可以完成的功能,继承以后一定可以完成,继承以后能完成的功能,不继承不一定能完成。STL规定每个Adaptable Function都应该挑选适当的来继承,因为Function Adapter将会提问问题。
//算法类
template <class T>
struct plus:public binary_function<T, T, T>{
T operator() (const T&x, const T&y) const {return x + y;}
};
template <class T>
struct minus:public binary_function<T, T, T>{
T operator() (const T&x, const T&y) const {return x - y;}
};
//逻辑运算类
template <class T>
struct logical_and:public binary_function<T, T, bool>{
bool operator() (const T&x, const T&y) const {return x && y;}
};
//相对关系类
template <class T>
struct equal_to:public binary_function<T, T, bool>{
bool operator() (const T&x, const T&y) const {return x == y;}
};
template <T>
struct less:public binary_function<T, T, bool>{
bool operator() (const T&x, const T&y) const {return x < y;}
};
这些都是一个个的小动作,为什么要把这些动作写成一个函数或者是仿函数呢?因为要把这些动作作为函数或者仿函数传给算法使用。
来源:CSDN
作者:哎呦,帅小伙哦
链接:https://blog.csdn.net/xiaoan08133192/article/details/104727462