(优先)队列简单总结

就总结下写法吧老是忘啊属实dd

1.队列及相关操作

1 queue <Type> q;
1 q.size();//返回q里元素个数
2 q.empty();//返回q是否为空,空则返回1,否则返回0
3 q.push(k);//末尾插入k
4 q.pop();//删掉q的第一个元素
5 q.top();//返回q的第一个元素 ≈ q.front();
6 q.back();//返回q的末尾元素

2.简单优先队列:默认降序队列

1 priority_queue <Type> q;

3.自定义优先队列

先把原型摆上: priority_queue<Type, Container, Functional>

1 //升序队列
2 priority_queue <Type,vector<Type>,greater<Type> > q;
3
4 //降序队列
5  priority_queue <Type,vector<Type>,less<Type> >q; 
 1 //(一) 写比较函数实现降序队列
 2 struct tmp1 { int x; int y; };
 3
 4 struct tmp2 {
 5     bool operator() (tmp1 a, tmp1 b) {
 6         return a.y < b.y;
 7     }
 8 };
 9
10 priority_queue<tmp1, vector<tmp1>, tmp2> f;
 1 //(一)在结构体里重载运算符实现降序队列
 2 struct tmp1 {
 3      int x; int y;
 4      tmp1(int a,int b) {x = a; y=b;}
 5      bool operator<(const tmp1& c) const{
 6          return y < c.y;
 7     }
 8 };
 9
10 priority_queue<tmp1> d;

原文地址:https://www.cnblogs.com/noobimp/p/10325350.html

时间: 2024-10-12 01:54:45

(优先)队列简单总结的相关文章

7-18 银行业务队列简单模拟

7-18 银行业务队列简单模拟(25 分) 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列.假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出. 输入格式: 输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,后面跟着N位顾客的编号.编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口.数字

redis消息队列简单应用

参考 https://blog.yxccan.cn/blog/detail/3 一.什么是消息队列 是一个消息的链表,是一个异步处理的数据处理引擎. PS:可以理解为在redis的list列表中存放消息数据,然后按照排队方式先进先出(左进右出:右进左出) 二.可以使用的应用场景 主要应用一些延迟或异步操作的场景比如:发送邮件.发送短信.视频转码.图片转码.日志存储.导入数据等在发送邮件或者短信,我们不希望程序一直停留,等待发送成功才相应,而是异步进行处理,即:将待发送的邮件数据添加到消息队列中,

Linux 进程间通信(posix消息队列 简单)实例

Linux 进程间通信(posix消息队列 简单)实例 详情见: http://www.linuxidc.com/Linux/2011-10/44828.htm 编译: gcc -o consumer consumer.c -lrt gcc -o producer producer.c -lrt /* * * Filename: producer.c * * Description: 生产者进程 * * Version: 1.0 * Created: 09/30/2011 04:52:23 PM

利用redis List队列简单实现秒杀 PHP代码实现

利用redis List队列简单实现秒杀 PHP代码实现 2018年05月28日 11:37:46 m_nanle_xiaobudiu 阅读数 35674更多 分类专栏: Redis 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m_nanle_xiaobudiu/article/details/80479666 一 生产者producer部分 ---------------------

7-1 银行业务队列简单模拟 (25 分)

题目: 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列.假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出. 输入格式: 输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,后面跟着N位顾客的编号.编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口.数字间以空格分隔. 输出格式: 按业务处

node事件循环和消息队列简单分析

node的好处毋庸置疑,事件驱动,异步非阻塞I/O,以及处理高并发的能力深入人心,因此大家喜欢用node做一些小型后台服务或者作为中间层和其他服务配合完成一些大型应用场景. 什么是异步? 异步和同步应该是经常谈的一个话题了.同步的概念很简单,自上而下依次执行,必须等上边执行完下边才会执行.而异步可以先提交一个命令,中间可以去执行别的事务,而当执行完之后回过头来返回之前的任务. 举个栗子: 你很幸运,找了一个漂亮的女朋友,有一天你的女朋友发短信问你晚上看什么电影?但你并不知道看什么,马上打开电脑查

利用JAVA线程安全队列简单实现读者写者问题。

常见的操作系统教科书中,会使用互斥锁来实现读者线程和写者线程的同步问题,但是在JDK5推出线程安全队列之后,将该问题变得异常简单. java.util.concurrent.ConcurrentLinkedQueue 是线程安全的非阻塞队列,其实很容易想到,非阻塞队列当线程需要等待的时候,则不会阻塞等待,而是直接根据情况返回. java.util.concurrent.LinkedBlockingQueue 是线程安全的阻塞队列,该队列能够在很多情况下对线程进行阻塞,比如队列为空时调用take(

5-2 银行业务队列简单模拟

设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列.假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出. 输入格式: 输入为一行正整数,其中第1个数字N(≤\le≤1000)为顾客总数,后面跟着N位顾客的编号.编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口.数字间以空格分隔. 输出格式: 按业务处

7-18 银行业务队列简单模拟(25 分)

设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列.假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出. 输入格式: 输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,后面跟着N位顾客的编号.编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口.数字间以空格分隔. 输出格式: 按业务处理完成的