`
追梦--
  • 浏览: 36953 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

c++-STL-priority_queue(优先队列)

阅读更多
    如果我们在竞赛中如果用堆来实现一个优先队列,代码量不说,还有可能出现低级错误。这时候,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;
} 

0
5
分享到:
评论

相关推荐

    【C++入门到精通】C++入门 - priority-queue(STL)优先队列

    priority_queue 源码

    C++ STL 开发技术导引(第6章)

    第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应用基础...

    C++ STL开发技术导引(第5章)

    第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应用基础...

    C++ STL开发技术导引(第3章)

    第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应用基础...

    C++容器类的简单介绍.doc

    1、STL标准容器类简介 标准容器类 说明 顺序性容器 vector 相当与数组,从后面快速的插入与删除,直接访问任何元素 deque 双队列,从前面或后面快速的插入与删除,... priority_queue 最高优先级元素总是第一个出列

    C++进阶课程讲义_v1.0.4.pdf

    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语言提高部分目录...

    go-web:后端开发指南(笔记)

    priority_queue set unordered_set multiset unordered_multiset map multimap unordered_map unordered_multimap algorithm 其它 实现自定义排序规则 Python 攻略 基本数据类型 生成器 文件操作 并发 三方库 jieba ...

    C++标准程序库STL的架构

    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不会-Competitive-Programming-Resources:可以帮助您开始/练习竞争性编程的东西

    leetcode 不会竞争性编程资源 可以帮助您开始/练习竞争性编程的东西 选择语言: C++ 让生活更轻松。 它是竞争程序员最流行的语言选择,...Priority_queue/heaps(最小/最大): 下一步应该是掌握 C++ 编程。 HackerRan

    C++大学教程,一本适合初学者的入门教材(part1)

    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...

    C++大学教程,一本适合初学者的入门教材(part2)

    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...

Global site tag (gtag.js) - Google Analytics