您的位置:首页 > 编程语言 > C语言/C++

C++优先队列的调用

2015-08-16 07:56 465 查看
</pre><pre name="code" class="cpp">/*
在头文件 #include<queue> 中 对于基本数据类型 还涉及头文件 #include<vector>
优先队列简单来说就是数据存入一个队列中,优先将队列中最大或最小的数放到队首,也就是下一次取的数是队列中最大或最小的。
*/

#include<queue>
#include<vector>
#include<iostream>
using namespace std;
//#include<greater>

using namespace std;

struct A
{
int x,y;
};
//运算符重载
bool operator < (A a1,A a2)
{
if(a1.x == a2.x) return a1.y>a2.y;
return a1.x>a2.x;        //先出小
}

int main()
{
priority_queue<int> que;  //优先从大到小(默认状态)
//for(int i=0;i<10;i++)
que.push(3);
que.push(1);
que.push(8);
que.push(13);
que.push(-9);

for(int i=0;i<5;i++)
{
cout<<que.top()<<endl;
que.pop();
}

cout<<endl;
priority_queue< int,vector<int>,greater<int> > qq;   //优先从小到大

qq.push(3);
qq.push(1);
qq.push(8);
qq.push(13);
qq.push(-9);

for(int i=0;i<5;i++)
{
cout<<qq.top()<<endl;
qq.pop();
}

cout<<endl;

//优先队列存结构体 实现从小到大
priority_queue<A> pp;
A a,b,c;
a.x=1;
a.y=3;
pp.push(a);

b.x=1;
b.y=2;
pp.push(b);

c.x=3;
c.y=4;
pp.push(c);

while(!pp.empty())
{
cout<< pp.top().x <<" "<<pp.top().y<<endl;
pp.pop();
}

return 0;

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