STL函数对象
2014-04-03 22:10
190 查看
#include <iostream> #include <queue> #include <ctime> #include <algorithm> #include <functional> using namespace std; template <typename T> class MyComparator //函数对象类 { public: bool operator()(T a,T b) { //谁离60越近,谁的优先级就越高 return abs(a-60)>abs(b-60); } }; int main() { //指定 priority_queue 的比较函数对象类为 MyComparator priority_queue<int,deque<int>,MyComparator<int> > pq; srand((unsigned)time(0)); for(int i=0;i<10;i++) { //产生10个0-99间的随机数 ,并压入队列 int rd=rand()%100; pq.push(rd); cout <<rd <<" "; } cout <<endl; //按函数对象输出并弹出元素 for(int i=0;i<10;i++) { cout <<pq.top() <<" "; pq.pop(); } cout <<endl; system("pause"); }
在默认情况下,priority_queue的第3个参数为less,这是STL中预定义的函数对象,预定义的函数对象如下所示
plus | 算术 | 返回两个数的和:a+b |
minus | 返回两个数的差:a-b | |
multiplies | 返回两个数的乘积:a*b | |
divides | 返回两个数的商:a/b | |
mudulus | 返回两个数的模:a%b | |
negate | 返回某个数的相反数:-a | |
equal_to | 关系 | 判断两个数是否相等:a==b |
not_equal_to | 判断两个数是否不等:a!=b | |
greater | 判断第一个数是否大于第二个数:a>b | |
less | 判断第一个数是否小于第二个数:a<b | |
greate_equal | 判断第一个数是否大于等于第二个数:a>=b | |
less_equal | 判断第一个数是否小于等于第二个数:a<=b | |
logical_and | 逻辑 | 返回两个数的逻辑与结果:a&&b |
logical_or | 返回两个数的逻辑或结果:a||b | |
logical_not | 返回某个数的逻辑非结果:!a |
priority_queue<int,deque<int>,greater<int> > pq;
相关文章推荐
- C++ STL(29):Function Object Adapter(函数对象适配器)
- STL之函数对象(二)
- STL中的函数对象(Funciont Objects)
- STL——仿函数(函数对象)
- STL中调用函数对象和普通函数差异
- STL算法之回调函数和函数对象的理解及设计
- STL知识点(常用算法函数介绍 、容器、类属算法、迭代器、函数对象、适配器、分配器
- C++STL之函数对象及谓词
- STL学习笔记8 -- 函数对象
- stl基本容器学习——函数对象
- 模板函数与模板类的区别。模板函数允许隐式调用,所以STL算法允许传入函数指针,也允许传入函数对象
- STL之函数对象
- STL之函数对象
- STL学习之十二:函数对象和谓词
- STL——函数对象
- ###STL学习--函数对象
- STL-函数对象适配器
- STL运用的C++技术(6)——函数对象
- C++STL之函数对象及谓词
- STL中伪函数、函数对象(functor)初步理解(下)