代码如下:

#pragma once
#include <iostream>
#include <vector>
using namespace std;template<typename T>
struct Less
{bool operator()(const T &a, const T &b){return a < b;}
};template<typename T>
struct Greater
{bool operator()(const T &a, const T &b){return a > b;}
};template<typename T, typename Container = vector<T>, typename Compare = Less<T>>
class priorityQueue
{public:void shiftDown(){int parent = 0;int child = 2 * parent + 1;while (child < con.size()){if (child + 1 < con.size() && cmp(con[child], con[child + 1])){++child;}if (cmp(con[parent], con[child])){swap(con[parent], con[child]);parent = child;child = 2 * parent + 1;}else break;}}void shiftUp(int child){int parent = (child - 1) / 2;while (child > 0){if (cmp(con[parent], con[child])){swap(con[parent], con[child]);child = parent;parent = (child - 1) / 2;}else break;}}void push(const T& val){con.push_back(val);shiftUp(con.size() - 1);}void pop(){swap(con[0], con[con.size() - 1]);con.pop_back();shiftDown();}T & top(){return con.front();}size_t size() const{return con.size();}bool empty() const{return con.empty();}private:Container con;Compare cmp;
};

测试代码如下:

#include <iostream>
#include "PriorityQueue.h";
using namespace std;int main()
{priorityQueue<int>pq;pq.push(13);pq.push(14);pq.push(9);pq.push(23);pq.push(12);pq.push(22);while (!pq.empty()){cout << pq.top() << " ";pq.pop();}cout << endl;priorityQueue<int, vector<int>, greater<int>> pq1;pq1.push(13);pq1.push(14);pq1.push(9);pq1.push(23);pq1.push(12);pq1.push(22);while (!pq1.empty()){cout << pq1.top() << " ";pq1.pop();}cout << endl;class A{public:A(int a = 1):_a(a){}bool operator<(const A& a) const{return _a < a._a;}bool operator > (const A &a) const{return _a > a._a;}int _a;};priorityQueue<A> pq2;pq2.push(A(123));pq2.push(A(14));pq2.push(A(13));pq2.push(A(23));pq2.push(A(88));pq2.push(A(999));while (!pq2.empty()){cout << pq2.top()._a << " ";pq2.pop();}cout << endl;return 0;
}

测试结果:

[C++STL]C++实现priority_queue容器适配器相关推荐

  1. (P85)stl(十三):容器适配器,stack,queue,优先级队列priority_queue,make_heap

    文章目录 1.容器适配器 2.stack 3.queue 4.优先级队列priority_queue 5.make_heap 6.set 1.容器适配器 利用基本容器构造的容器,称之为容器适配器 基本 ...

  2. [C++STL]C++实现queue容器适配器

    代码如下: #include <iostream> #include <deque>using namespace std;template<typename T,typ ...

  3. [C++STL]C++实现stack容器适配器

    代码如下: #include <iostream> #include <deque> using namespace std;template<typename T,ty ...

  4. C++ STL : 模拟实现STL中的容器适配器priority_queue

    目录 priority_queue 文档介绍 实现思路 思路 仿函数 实现 priority_queue 文档介绍 文档介绍 优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含 ...

  5. C++STL总结笔记(一)—— 容器和容器适配器

    文章目录 前言 一.概念 1.1 顺序容器 1.2 容器适配器 1.3 关联容器 二.程序示例 1. vector和Set自定义数据类型的访问 2.vector容器嵌套 3.list容器排序 4.pa ...

  6. STL 容器简介:C++ 容器:顺序性容器、关联式容器和容器适配器

    STL标准容器类简介 标准容器类 说明 顺序性容器 vector 从后面快速的插入与删除,直接访问任何元素 deque 从前面或后面快速的插入与删除,直接访问任何元素 list 双链表,从任何地方快速 ...

  7. C++---容器适配器(stack、queue、priority_queue)

    容器适配器 首先我们要知道容器适配器是干啥的. 我们可以简单的将容器适配器当做一个接口装置.有的电脑上没有数据转接口,但是有usb接口,这是我们没必要重新买一个电脑,我们可以做一个usb数据转接线.而 ...

  8. 5.1 c++ STL 容器适配器简介

    1. 适配器简介 在详解什么是容器适配器之前,初学者首先要理解适配器的含义. 其实,容器适配器中的"适配器",和生活中常见的电源适配器中"适配器"的含义非常接近 ...

  9. C++ 标准模板库 STL 容器适配器

    C++ 标准模板库 STL 容器适配器 容器 数据结构 时间复杂度 顺序性 重复性 stack deque / list 顶部插入.顶部删除 O(1) 无序 可重复 queue deque / lis ...

最新文章

  1. 实战分享之专业领域词汇无监督挖掘
  2. 一个电子工程师的完美人生!
  3. matlab speex的语音处理模块_基于MATLAB的条形码识别系统[GUI,可识别几十个图片]...
  4. python matplotlib 播放图片变化过程
  5. 如何建立完整的数据治理体系
  6. GetTickCount
  7. paypal android sdk,Android Paypal SDK错误:商家不接受此类付款
  8. 段地址寄存器、偏移地址寄存器
  9. 如何选择深度学习的GPU
  10. 学计算机的应届生怎么面试自我介绍,最新应届生面试自我介绍(精选3篇)
  11. java面试逻辑思维题目_逻辑思维面试题-java后端面试
  12. 计算机作业我家乡的变化英语作文,我的变化英语作文3篇
  13. [PCB]PCB光板生产过程中板子弯曲或翘起原因分析
  14. 这一次,Google 终于对 Web 自动化下手了!
  15. 基于Twitter数据的情感预测与案例分析
  16. Python学习0——基础知识1
  17. 财务年终总结怎么写?技巧在这里
  18. 用FLASH制作RPG
  19. 凸包+凹包+凸边凹化算法
  20. c++成员声明中的非法限定名_C++中作用域限定符

热门文章

  1. Android OkHttp3简介和使用详解
  2. 【CASS精品教程】CASS9.1土方量的计算方法汇总
  3. LeetCode之Reverse String II
  4. linux c之使用共享内存实现进程间通信
  5. C语言之反序数组和求最大值和最小值
  6. 不固定图片宽高瀑布流_APP设计学习:瀑布流式的产品UI设计
  7. nvm用标准sata ahci码_能者多劳!让NVMe固态硬盘做系统盘的同时,加速SATA数据盘...
  8. 中国9大民居建筑,你都认识吗?
  9. 首次公开!人教版1-9年级绝密编写:被重点中小学永久收录的数学教案和试题...
  10. 面试可以,但别打扰我睡觉! | 今日最佳