//采用默认优先关系:
//(priority_queue<int>que;)
//Queue 0:
// 91 83 72 56 47 36 22 14 10 7 3
//
//采用结构体自定义优先级方式一:
//(priority_queue<int,vector<int>,cmp>que;)
//Queue 1:
// 3 7 10 14 22 36 47 56 72 83 91
//Queue 2:
// 91 83 72 56 47 36 22 14 10 7 3
//
//采用头文件"functional"内定义优先级:
//(priority_queue<int, vector<int>,greater<int>/less<int> >que;)
//Queue 3:
// 3 7 10 14 22 36 47 56 72 83 91
//Queue 4 :
// 91 83 72 56 47 36 22 14 10 7 3
//
//采用结构体自定义优先级方式二:
//(priority_queue<number>que)
//Queue 5:
// 3 7 10 14 22 36 47 56 72 83 91
//Queue 6:
// 91 83 72 56 47 36 22 14 10 7 3

#include <iostream>
#include <functional>
#include <stdio.h>
#include <queue>
#include <vector>
#include <stdlib.h>
using namespace std; struct cmp1
{
bool operator () (int &a, int &b)
{
return a > b ; // 从小到大排序,值 小的 优先级别高
}
}; struct cmp2
{
bool operator () (int &a, int &b)
{
return a < b; // 从大到小
}
}; struct number1
{
int x;
bool operator < (const number1 &a)const
{
return x > a.x; // 从小到大 ,x 小的 优先级别高
}
}; struct number2
{
int x;
bool operator < (const number2 &a)const
{
return x < a.x; // 从大到小 ,x 大的优先级别高
}
}; int a[] = {14,10,56,7,83,22,36,91,3,47,72,0};
number1 num1[] = {14,10,56,7,83,22,36,91,3,47,72,0};
number2 num2[] = {14,10,56,7,83,22,36,91,3,47,72,0}; int main()
{
priority_queue<int>que; // 采用默认优先级构造队列 从大到小。 priority_queue<int, vector<int>, cmp1 >que1;
priority_queue<int, vector<int>, cmp2 >que2; priority_queue<int, vector<int>, greater<int> > que3; //functional 头文件自带的
priority_queue<int, vector<int>, less<int> > que4; //functional 头文件自带的 priority_queue<number1> que5;
priority_queue<number2> que6; int i;
for(i=0; a[i]; i++)
{
que.push(a[i]);
que1.push(a[i]);
que2.push(a[i]);
que3.push(a[i]);
que4.push(a[i]); } for(i=0; num1[i].x; i++)
que5.push(num1[i]);
for(i=0; num2[i].x; i++)
que6.push(num2[i]); printf("采用默认优先关系:\n(priority_queue<int>que;)\n");
printf("Queue 0:\n");
while(!que.empty())
{
printf("%3d",que.top());
que.pop();
}
puts("");
puts(""); printf("采用结构体自定义优先级方式一:\n(priority_queue<int,vector<int>,cmp>que;)\n");
printf("Queue 1:\n");
while(!que1.empty())
{
printf("%3d",que1.top());
que1.pop();
}
puts(""); printf("Queue 2:\n");
while(!que2.empty())
{
printf("%3d",que2.top());
que2.pop();
}
puts("");
puts(""); printf("采用头文件\"functional\"内定义优先级:\n(priority_queue<int, vector<int>,greater<int>/less<int> >que;)\n");
printf("Queue 3:\n");
while(!que3.empty())
{
printf("%3d",que3.top());
que3.pop();
}
puts(""); printf("Queue 4 :\n");
while(!que4.empty())
{
printf("%3d",que4.top());
que4.pop();
}
puts("");
puts(""); printf("采用结构体自定义优先级方式二:\n(priority_queue<number>que)\n");
printf("Queue 5:\n");
while(!que5.empty())
{
printf("%3d",que5.top());
que5.pop();
}
puts(""); printf("Queue 6:\n");
while(!que6.empty())
{
printf("%3d",que6.top());
que6.pop();
} system("pause");
return 0;
}

  

priority_queue 优先队列用法的更多相关文章

  1. STL priority_queue 常见用法详解

    <算法笔记>学习笔记 priority_queue 常见用法详解 //priority_queue又称优先队列,其底层时用堆来实现的. //在优先队列中,队首元素一定是当前队列中优先级最高 ...

  2. 第20章 priority_queue优先队列容器

    /* 第20章 priority_queue优先队列容器 20.1 priority_queue技术原理 20.2 priority_queue应用基础 20.3 本章小结 */ // 第20章 pr ...

  3. stack堆栈容器、queue队列容器和priority_queue优先队列容器(常用的方法对比与总结)

    stack堆栈是一个后进先出的线性表,插入和删除元素都在表的一端进行. stack堆栈的使用方法: 采用push()方法将元素入栈: 采用pop()方法将元素出栈: 采用top()方法访问栈顶元素: ...

  4. priority_queue优先队列/C++

    priority_queue优先队列/C++ 概述 priority_queue是一个拥有权值观念的queue,只允许在底端加入元素,并从顶端取出元素. priority_queue带有权值观念,权值 ...

  5. priority_queue 优先队列

    优先队列是单向队列的一种,可以按照默认或自定义的一种方式来对队列中的数据进行动态排序 template<class _Ty, class _Container = vector<_Ty&g ...

  6. 【转】priority_queue优先队列

    转自:http://www.cppblog.com/shyli/archive/2007/04/06/21366.html http://www.cppblog.com/shyli/archive/2 ...

  7. STL 优先队列 用法

    今天做题用到了优先队列 对它的用法还不是很熟悉 现在整理一下. 需要的库 #include<queue> using namespace std; 不过我都用bits/stdc++.h.. ...

  8. C++ STL priority_queue 优先队列

    优先队列: 与队列的用法是一样的,优先队列内部是通过堆来排序实现的, #include<iostream> #include <queue> using namespace s ...

  9. PriorityQueue优先队列用法入门

    PriorityQueue是队列的一种,它叫做优先队列,该类实现了Queue接口. 之所以叫做优先队列,是因为PriorityQueue实现了Comparator这个比较接口,也就是PriorityQ ...

随机推荐

  1. tomcat 内存溢出解决办法

  2. 浙江理工2015.12校赛-G Jug Hard

    Jug Hard Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1172 Solved: 180 Description You have two e ...

  3. Codeforces Round #374 (div.2)遗憾题合集

    C.Journey 读错题目了...不是无向图,结果建错图了(喵第4样例是变成无向就会有环的那种图) 并且这题因为要求路径点尽可能多 其实可以规约为限定路径长的拓扑排序,不一定要用最短路做 #prag ...

  4. 编译android源码官方教程(6)编译内核

    Building Kernels IN THIS DOCUMENT Selecting a kernel Identifying kernel version Downloading sources ...

  5. crontab 的使用

    1. 创建一个文件  mycrontab 2. 将此文件运用到系统的定时器中     crontab  mycrontab 3. crontab -e     (或直接编辑  mycrontab, 但 ...

  6. Cannot find class for bean with name '/hello' defined in ServletContext resource

    Cannot find class for bean with name '/hello' defined in ServletContext resource [/WEB-INF/chapter2- ...

  7. Ubuntu快捷键

    https://linux.cn/article-3025-1.html 超级键操作 1.超级键(Win键)–打开dash. 2.长按超级键– 启动Launcher.并快捷键列表. 3.按住超级键,再 ...

  8. NetBeans IDE配置调试

    1.首先需要下载xdebug,在网址中http://www.xdebug.org/download.php可据实际配置环境下载,当然有的Apache安装后已经安装该项,就不必作处理: 2.配置php. ...

  9. HDU-4529 郑厂长系列故事——N骑士问题 状态压缩DP

    题意:给定一个合法的八皇后棋盘,现在给定1-10个骑士,问这些骑士不能够相互攻击的拜访方式有多少种. 分析:一开始想着搜索写,发现该题和八皇后不同,八皇后每一行只能够摆放一个棋子,因此搜索收敛的很快, ...

  10. 《K&R》里贯穿全书的代码

    个人阅读<K&R>的感觉就是:前后内容联系特别紧密,前面的代码没有理解好到了后面就看不下去. 1.getline(char s[], int lim) 调用结果:往参数数组中读入字 ...