您的位置:首页 > 其它

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: