STL——仿函数

百般思念 提交于 2020-03-08 11:28:43

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;}
};

这些都是一个个的小动作,为什么要把这些动作写成一个函数或者是仿函数呢?因为要把这些动作作为函数或者仿函数传给算法使用。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!