stl库的使用——队列queue和优先队列和优先队列小根堆(全家桶哎)
其实实现队列蛮简单的,但敌不过人懒~
于是stl库中就有了专门实现队列的函数#include<queue>
这里讲解下queue常用的几个操作
1.q.push(),向队列中插入元素
2.q.size(),计算并返回队列大小(也就是队列中元素个数)
3.q.front(),返回队头元素
4.q.pop(),弹出队头元素
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue> //多了一个库哎~
using namespace std;
int main()
{queue<int>q; //先定义一个队列 for(int i=1;i<=10;i++){int x; //每次输入一个数并插入队列中 cin>>x;q.push(x); //插入操作 } int size = q.size(); //q.size()是来计算现在队列中是有多少元素的 cout<<size<<endl;while(q.size()){int t = q.front();//q.front()来返回队头元素 cout<<t<<endl; //看看每次输出的元素和输入的顺序一不一样 q.pop(); //从队头弹出元素,也就是队头出队 } return 0;
}
挺有意思的吧,现在我们来试试优先队列,也就是自动让入队的元素根据权值排队,权值大的排在前面,听起来好高级hhh
普通的队列是queue,优先队列就是priority_queue(没错还是下划线)
1.q.push(),向队列中插入元素
2.q.size(),计算并返回队列大小(也就是队列中元素个数)
3.q.top(),返回队头元素
4.q.pop(),弹出队头元素
(等等怎么从q.front()变成q.top()了呢?是因为优先队列使用堆来实现的,因此现在不是队头而是堆顶啦)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std; //试着乱序输入看看会得到什么结果
int main()
{priority_queue<int>q; //这变化了一下 for(int i=1;i<=10;i++){int x; cin>>x;q.push(x); } int size = q.size(); cout<<size<<endl;while(q.size()){int t = q.top(); //还有这儿 cout<<t<<endl; q.pop(); } return 0;
}
来我们看最后一个成员——优先队列小根堆,其实就是把排列顺序变了一下,小根堆是由小到大排序的~
1.q.push(),向队列中插入元素
2.q.size(),计算并返回队列大小(也就是队列中元素个数)
3.q.top(),返回队头元素
4.q.pop(),弹出队头元素
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<vector> //这还要再多加一个头文件
using namespace std;
int main()
{ //int是数据类型,vector和greater是固定的 priority_queue<int,vector<int>,greater<int> >q; //特别注意下这两个尖括号要分开,不然就成了cin>>这种,是会报错的 for(int i=1;i<=10;i++){int x; cin>>x;q.push(x); } int size = q.size(); cout<<size<<endl;while(q.size()){int t = q.top(); //这也是top cout<<t<<endl; //看看输出有什么不一样? q.pop(); } return 0;
}
队列还是蛮常用的,小根堆在dijkstra中要用,顶多就是定义难记一点,多敲几遍就熟了呗
要加油蛙!!!
stl库的使用——队列queue和优先队列和优先队列小根堆(全家桶哎)相关推荐
- STL库:stack和queue
STL库:stack和queue 文章目录 STL库:stack和queue 1.STL库中stack的官方介绍 2.stack的常用接口 3.stack的模拟实现 4.STL库中queue的官方介绍 ...
- STL(七)——队列queue优先队列priority_queue
一.queue 1.特点:先进先出(FIFO-first in first out) 只允许在表的前端(front,称为队头)进行删除操作,在表的后端(rear,称为队尾)进行插入操作 2.基本操作 ...
- 算法竞赛常用STL库
栈(Stack) 概念:就像一个盒子一样,进去想出来就得等上面的先出去,也就是"先进后出". 往往栈的功能有上面四种,下面我们手写一个栈来实现这四种功能来更好的理解一下. 模拟栈的 ...
- c++ STL:队列queue、优先队列priority queue 的使用
说明:本文全文转载而来,原文链接:http://www.cppblog.com/wanghaiguang/archive/2012/06/05/177644.html C++ Queues(队列) C ...
- Queue+Stack(C++,标准库中的队列和栈)
STL Queue(先进先出) 头文件#include 成员函数 queue::pop () //出队列 queue::push () //入队列 queue::size () //返回队列中元素个数 ...
- oracle 删除 queue,C++ stl队列Queue用法介绍:删除,插入等操作代码举例
c++队列queue模板类的定义在头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型. C++队列Queue是一种容 ...
- STL库中的优先队列
priority_queue是一个优先队列,优先级高的最先出队,默认最大值优先.内部实现为堆,因此出队和入队的时间复杂度均为O(logn).可以自定义优先级控制出队顺序优先队列不支持删除堆中指定元素, ...
- C++STL库:String介绍
C++STL库 学习方法:使用STL的三个境界:能用,明理,能扩展. 今天我们开启一个新主题:C++数据结构之STL库,我们将介绍STL库里常用库的用法与实现过程. 常用库 库名称 所需头文件 数据结 ...
- C++常用STL库详细总结
C++STL库函数总结 #include< algorithm >库函数 1.sort排序 2.reverse倒转 3.unique去重 4.二分查找 5.find函数查找 6.字符串和整 ...
最新文章
- 8道Python基础面试练习题
- 上海市高校大学生计算机一级,上海市高校计算机等级考试(一级)..doc
- Codeforces Round #482 (Div. 2)
- Android/Java中使用Protobuf的Any类型实现泛型解析
- how to render AET extension field as code list
- JS面向对象编程实现
- 数据结构:排序算法之插入排序
- 沉梦云商城系统2.1.7免授权源码+搭建教程
- 服务器Raid数据恢复成功案例和raid 5数据恢复算法原理
- JDK自带内存及线程分析工具
- jsp还能引用项目外的js,css啊
- 大数据安全分析有哪些常见问题
- 过采样 Oversampling
- ppt流程图箭头分叉_箭头循环图ppt模板_PPT结构图制作中箭头跟着目标走的技巧_ppt箭头流程图模板_ppt箭头循环图...
- Juniper JUNOS Commands (Tips and Tricks)
- 字节辟谣被裁员工与 HR 互殴;苹果头显多个新功能曝光;谷歌希望 RISC-V 成为 T1 级 Android 架构|极客头条...
- 去除 WPS 的广告
- 如何进行文献检索和阅读
- spm12预处理步骤及知识点总结
- 2022华为杯A题第二问详细思路分析移动场景超分辨定位问题