例说数据结构&STL(四)——queue
来源:互联网 发布:mac vpn推荐 编辑:程序博客网 时间:2024/05/17 03:19
1 白话队列(queue)
大家一定听过这样一个关于队列的笑话,“在饭堂排队打饭,最大的欣慰不是前面的人越来越少,而是后面等的人越来越多”。从这句话我们就能探出队列数据结构的精髓,它是一种先进先出(First In First Out ,简称FIFO)的线性表。只允许在表的尾端进行入队,而在首端进行出队。队列就是这样一个来源于生活的数据结构。
queue属于适配器容器类型,在STL中基于deque或者list对象而创建,它的应用很广泛,例如二叉树的层序遍历,银行业务系统,消息队列等等。
2 STL中queue实战
2.1 头文件包含
STL中queue模板类的调用需要包含下面的头文件:
#include<queue>
我们在使用的时候还需要包含标准库命名空间,可以在头文件下声明using namespace std;
。queue包含的接口比较少,像因为它是单向添加,所以只有push()活着pop()操作,没有push_back()导向性的接口。push()就是指在队列尾部添加元素,而pop()就是指在队列首部删除元素,这是queue先进先出的性质所决定的。
2.2 变量声明
queue与后面要介绍的stack模版非常类似,queue模版也需要定义两个模版参数,一个是元素类型,一个是容器类型。元素类型是必要的,和前面介绍的一样,可以是传统数据类型诸如int,long,float等,或者是类,结构体诸如string等。容器类型是可选的,默认就是前面介绍的deque类型。
queue的声明如下:
queue<int> que_fir;queue<double> que_sed;
2.3 基本操作
que_fir.push(1); // 放入一个元素1在队列尾部que_fir.pop(); // 删除队首一个元素que_fir.back(); // 访问队尾元素que_fir.front(); // 访问队首元素if(!que_fir.empty()); // 判断队列是否为空 que_fir.swap(que_sed); // 完全交换两个队列中数据,当然两个队列中保存的必须是一种数据类型que_fir.size(); // 队列中元素个数
2.4 牛刀小试
之前写过一个二叉树层序遍历的实例,它就是使用了队列的原理依次按层遍历输出整个二叉树保存的数据。详细实现请大家阅读博文二叉树的层序遍历详细讲解(附完整C++程序)。
3 小结
队列的操作很简单,常用的方法函数只有这几个。需要注意的是适配器类型容器不支持迭代器操作,所以也就没有类似指针(iterator)操作间接访问。一般情况下是一边pop(),然后一边front()函数遍历整个队列。
以上是个人学习记录,由于能力和时间有限,如果有错误望读者纠正,谢谢!
转载请注明出处:http://blog.csdn.net/FX677588/article/details/76284205
- 例说数据结构&STL(四)——queue
- 例说数据结构&STL(一)——vector
- 例说数据结构&STL(二)——list
- 例说数据结构&STL(三)——deque
- 例说数据结构&STL(五)——stack
- 例说数据结构&STL(六)——heap
- 例说数据结构&STL(七)——priority_queue
- 例说数据结构&STL(八)——set
- 例说数据结构&STL(九)——map
- 例说数据结构&STL(十)——hash_set/unordered_set
- 例说数据结构&STL(十一)——hash_map/unordered_map
- 例说数据结构&STL(十二)——iterator
- 例说数据结构&STL(十三)——pair
- 数据结构——queue
- 【四】数据结构之Queue
- 【STL】顺序容器 — queue
- STL源码—stack,queue
- STL源码—stack,queue
- 数据结构:链表栈
- POJ3133 Manhattan Wiring(难题 较为复杂)
- 鼠标滚轮事件之支付宝案例
- ICG博弈游戏的必胜策略
- 用Apache Spark进行大数据处理之Spark SQL(2)
- 例说数据结构&STL(四)——queue
- 逻辑回归LogisticRegression
- Python-17 lambda表达式
- 【LeetCode系列】动态规划算法
- 【C语言】动态内存分配
- web开发常见安全问题(SQL注入、XSS攻击、CSRF攻击)
- Priject Euler problem 1:multiples of 3 or 5
- 数据结构:数组队列
- 程序猿必须知道的一些有用的(外国)网站