首页 > 代码库 > 优先队列的使用方法
优先队列的使用方法
模版代码:
#include<iostream>#include<functional>#include<queue>using namespace std;struct node{ friend bool operator< (node n1, node n2) { return n1.priority < n2.priority; } int priority; int value;};int main(){ const int len = 5; int i; int a[len] = {3,5,9,6,2}; //相对来说这个是很随意的建立了一个数组来保存运算的结果 //示例1 priority_queue<int> qi; for(i = 0; i < len; i++) qi.push(a[i]); //这是将所有的元素一个个的向队列里面填充 for(i = 0; i < len; i++) { cout<<qi.top()<<" "; qi.pop(); } cout<<endl; //示例2 priority_queue<int, vector<int>, greater<int> >qi2; for(i = 0; i < len; i++) qi2.push(a[i]); for(i = 0; i < len; i++) { cout<<qi2.top()<<" "; qi2.pop(); } cout<<endl; //示例3 priority_queue<node> qn; node b[len]; b[0].priority = 6; b[0].value = http://www.mamicode.com/1; b[1].priority = 9; b[1].value = http://www.mamicode.com/5; b[2].priority = 2; b[2].value = http://www.mamicode.com/3; b[3].priority = 8; b[3].value = http://www.mamicode.com/2; b[4].priority = 1; b[4].value = http://www.mamicode.com/4; for(i = 0; i < len; i++) qn.push(b[i]); cout<<"优先级"<<‘\t‘<<"值"<<endl; for(i = 0; i < len; i++) { cout<<qn.top().priority<<‘\t‘<<qn.top().value<<endl; qn.pop(); } return 0;}
使用个人观点:
在入队时是用到了
priority_queue<int> qi;
for(i = 0; i < len; i++)
qi.push(a[i]);
在出栈的时候则是使用了
for(i = 0; i < len; i++)
{
cout<<qi.top()<<" ";
qi.pop();
}
当然,这个是使用默认的排序方式,顺序是由大到小排列的。那么如果是要将顺序反转过来我们则可以通过写一个结构体来达到自己的目的。
struct node
{
friend bool operator< (node n1, node n2)
{
return n1.priority < n2.priority;
}
int priority;
int value;
};
//它表示的含义是这个结构体中有两个值,
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。