如果我们在竞赛中如果用堆来实现一个优先队列,代码量不说,还有可能出现低级错误。这时候,c++ STL就是我们比赛中的一个好助手了。
和其他STL容器一样,priority_queue一样的又插入和删除元素。顾名思义,priority_queue就是权值大的优先出列,我们只需要插入数据,并拟定规则(重载操作符),priority_queue 自动排序(还是利用大顶堆,原理在此不详述)。
priority_queue 的构造函数有七种,这里只讲述比较重要的
priority_queue<int> que;
priority_queue<int,list<int>> (复制构造函数)
priority_queue<int,vector<int>,cmp>(cmp为比较函数)
常用的方法有:
c.top() | 返回队列头部数据 |
c.push(elem) | 在队列尾部增加elem数据 |
c.pop() | 队列头部数据出队 |
c.empty() | 判断队列是否为空 |
c.size() | 返回队列中数据的个数 |
但我们要将自己定义的类型使用priority_queue怎么办,重载运算符,代码如下:
#include<iostream>
#include<queue>
using namespace std;
struct node{
int x;
int y;
friend bool operator < (const node a,const node b){
if(a.x!=b.x){
return b.x<a.x;
}else{
return b.y<a.y;
}
//x小的先出列,相同再根据 y 的大小
}
};
int main(){
priority_queue<node> que;
node nodeList[6];
for(int i=1;i<6;i++){
node newNode;
newNode.x = i;
newNode.y = i;
que.push(newNode);
}
node newNode;
newNode.x = 3; newNode.y=4;
que.push(newNode);
while(!que.empty()){
node node1 = que.top();
que.pop();
cout << node1.x << " " << node1.y << endl;
}
system("pause");
return 0;
}
分享到:
相关推荐
priority_queue 源码
第19章 queue队列容器 270 19.1 queue技术原理 270 19.2 queue应用基础 271 19.3 本章小结 274 第20章 priority_queue优先队列容器 275 20.1 priority_queue技术原理 275 20.2 priority_queue应用基础...
第19章 queue队列容器 270 19.1 queue技术原理 270 19.2 queue应用基础 271 19.3 本章小结 274 第20章 priority_queue优先队列容器 275 20.1 priority_queue技术原理 275 20.2 priority_queue应用基础...
第19章 queue队列容器 270 19.1 queue技术原理 270 19.2 queue应用基础 271 19.3 本章小结 274 第20章 priority_queue优先队列容器 275 20.1 priority_queue技术原理 275 20.2 priority_queue应用基础...
1、STL标准容器类简介 标准容器类 说明 顺序性容器 vector 相当与数组,从后面快速的插入与删除,直接访问任何元素 deque 双队列,从前面或后面快速的插入与删除,... priority_queue 最高优先级元素总是第一个出列
10.2.7优先级队列priority_queue 110 10.2.8Set和multiset容器 111 10.2.9Map和multimap容器 118 10.2.10容器共性机制研究 123 10.2.11其他 124 10.3算法 125 10.3.1算法基础 125 10.3.2STL算法中函数对象和谓词 138...
本教程共分为5个部分,第一部分是C语言提高部分,第二部分为C++基础部分,第三部分为C++进阶部分,第四部分为C、C++及数据结构基础部分,第五部分为C_C++与设计模式基础,内容非常详细. 第一部分 C语言提高部分目录...
priority_queue set unordered_set multiset unordered_multiset map multimap unordered_map unordered_multimap algorithm 其它 实现自定义排序规则 Python 攻略 基本数据类型 生成器 文件操作 并发 三方库 jieba ...
10.3 Priority Queue 128 10.3.1 核心接口 128 10.3.2 运用实例 128 10.4 Bitset 129 10.4.1 Bitset运用实例 129 11 Strings 131 11.1 动机 131 11.1.1 示例:引出一个临时文件名 131 11.1.2 例二:引出一段文字并...
leetcode 不会竞争性编程资源 可以帮助您开始/练习竞争性编程的东西 选择语言: C++ 让生活更轻松。 它是竞争程序员最流行的语言选择,...Priority_queue/heaps(最小/最大): 下一步应该是掌握 C++ 编程。 HackerRan
20.4.3 Priority_queue适配器 20.5 算法 20.5.1 fill、fill_n、generate与generate_n 20.5.2 equal、mismatch和1exicographical_compare 20.5.3 remove、remove_if、 remove_copy和remove_copy_if 20.5.4...
20.4.3 Priority_queue适配器 20.5 算法 20.5.1 fill、fill_n、generate与generate_n 20.5.2 equal、mismatch和1exicographical_compare 20.5.3 remove、remove_if、 remove_copy和remove_copy_if 20.5.4...