priority_queue

优先队列是队列的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序,每次的push和pop操作,队列都会动态的调整,以达到我们预期的方式来存储。

定义:

priority_queue<int> p;//最大值优先,是大顶堆一种简写方式
priority_queue<int,vector<int>,greater<int>>q1;//最小值优先,小顶堆
priority_queue<int,vector<int>,less<int> >q2;//最大值优先,大顶堆

在使用时,我们会有很多时间用到根据结构体的某一个元素进行排序,下面给出定义结构体的优先级比较方式

struct node
{string name;int price;friend bool operator< (node a, node b){return a.price < b.price; // 相当于less,这是大顶堆,反之则是小顶堆,最大值优先
    }
} stu; //定义结构体变量

这样直接可以:
priority_queue<node > q;

操作代码:

#include <iostream>
#include <queue>
using namespace std;
/*
priority_queue<int> p;//最大值优先,是大顶堆一种简写方式
priority_queue<int,vector<int>,greater<int>>q1;//最小值优先,小顶堆
priority_queue<int,vector<int>,less<int> >q2;//最大值优先,大顶堆empty( )  //判断一个队列是否为空pop( )  //删除队顶元素push( )  //加入一个元素size( )  //返回优先队列中拥有的元素个数top( )  //返回优先队列的队顶元素优先队列的时间复杂度为O(logn),n为队列中元素的个数,其存取都需要时间。
*/
/*
struct node {string name;int price;
} stu;
struct cmp {bool operator () {return node.price < node.price; //相当于less, 大顶堆}
}
*/
struct node {string name;int price;friend bool operator< (node a, node b) {return a.price < b.price; // 相当于 less, 大顶堆,反之是小顶堆
    }
} stu;int main() {priority_queue<int> p;//最大值优先,是大顶堆一种简写方式priority_queue<int,vector<int>,greater<int> > q1;//最小值优先,小顶堆priority_queue<int,vector<int>,less<int> > q2;//最大值优先,大顶堆priority_queue<node > q;  // 定义结构体变量int a[] = {5,4,3,2,1};for(int i = 0; i < 5; i++)p.push(a[i]);while(!p.empty()){cout << p.top() << " ";p.pop();}return 0;
}

转载于:https://www.cnblogs.com/GHzz/p/8672294.html

STL模板整理 priority_queue相关推荐

  1. STL模板整理 set

    SET set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序.应该注意的是set中数元素的值不能直接被 ...

  2. c++ 的 stl模板库_C ++中的标准模板库(STL)

    c++ 的 stl模板库 Standard Template Library (STL) is a collection of standard C++ template classes. It co ...

  3. C++ STL模板库用法查询及一些常见面试题(自用)

    C++STL模板库 文章目录 C++STL模板库 用法查询 Array 1.使用 2.创建 3.成员函数 Vector 1.使用 2. 创建 3.成员函数 deque 1.使用 2. 创建 3.成员函 ...

  4. 【STL模板库_(个人总结)】

    1.什么是STL? 2.解释一下什么是trivial destructor 3.使用智能指针管理内存资源,RAII是怎么回事? 4.迭代器:++it.it++哪个好,为什么 5.说一下C++左值引用和 ...

  5. c++STL容器的priority_queue

    TL容器的priority_queue STL容器的priority_queue的简介 STL容器的priority_queue的简介 最大值优先级队列.最小值优先级队列 优先级队列适配器 STL ...

  6. STL模板之vector与sort的使用

    STL模板之vector与sort的使用 @(算法学习) 题目描述 题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩.都按先录入排列在前的规则处理. 例示: jack ...

  7. 运算符重载、STL模板库、类型转换、异常处理机制(C++五)

    目录 一.运算符重载 1. 引入运算符重载 2.语法格式 3.运算符重载有两种表现形式 4.运算符重载分类 5.运算符重载的特点: 二.C++中的STL模板库的使用 1.容器类(container) ...

  8. Latex 数学符号和公式模板整理

    Latex 数学符号和公式模板整理 日期 修改内容 2017年9月30日 添加希腊字母表 2017年10月12日 添加集合运算符 本文整理了Latex所有的数学符号和公式模板,便于查找.如果有错,麻烦 ...

  9. [C++STL教程]7.priority_queue优先队列入门学习!零基础都能听懂的教程

    不知不觉C++STL教程系列已经第7期了.之前我们介绍过:vector, queue, stack, set, map等等数据结构. 今天我们来学习一个新的stl容器:priority_queue优先 ...

  10. 关于STL模板的使用效率与控制输出时最后不加空格问题

    关于STL模板的使用效率与控制输出时最后不加空格问题 题目:PAT 1009 149ms vs 7ms的写法的细微区别 This time, you are supposed to find A*B ...

最新文章

  1. 京东技术主导:全新架构的分布式事务Hmily 2.1.1发布
  2. 金融风控实战——特征工程上
  3. js-forEach 不能使用break continue return true false
  4. ANDROID L日志系统——JAVAAPI与LIBLOG
  5. C#开启线程的四种方式
  6. 103. 二叉树的锯齿形层次遍历
  7. UVa11292 - Dragon of Loowater (贪心+模拟)
  8. c语言下标法与指针法,《C和指针》中关于指针与下标的问题
  9. Android 性能优化---(7)布局优化
  10. C#通过Kernel32.dll动态调用C++生成dll相关接口(结构体转换)相关问题整理
  11. linux 下 /dev和/sys/dev的区别
  12. 我在富士康挨踢了七年(十三.悉尼工作篇 )
  13. 【数据结构】(二叉树)计算二叉树的高度递归与非递归 三种方法 C语言
  14. Python使用PaddleOCR本地进行视频字幕识别
  15. python数据分析及可视化(十七)聚宽(双均线分析、因子选股策略、多因子选股策略、均值回归理论、布林带策略、PEG策略、权重收益策略)
  16. CSS,何谓CSS,如何使用CSS文件
  17. 大众点评必吃榜的必然
  18. 配置Python镜像
  19. 从你的全世界路过----不是所有的分手都是错误
  20. python中除号/和//的区别

热门文章

  1. MySQL DBA教程:Mysql性能优化之缓存参数优化
  2. [libgdx游戏开发教程]使用Libgdx进行游戏开发(11)-高级编程技巧 Box2d和Shader
  3. 网页内容爬取:如何提取正文内容
  4. Dinic PK Isap
  5. ORACLE 007 --5 group by 的用法及增强、高级子查询
  6. Java--继承(三)
  7. Oct22 实例测试
  8. 图灵完备-转自 知乎 陈超 的回答
  9. Android中的onWindowFocusChanged()方法详解
  10. 2011 5月13日