例说数据结构&STL(四)——queue

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值