队列 (queue)

这里写图片描述

概述

队列是一种先进先出 (FIFO) 的数据结构,它允许在一端插入数据,在另一端删除数据。最先进入队列的数据最先出队列。除此之外,队列还允许访问队头元素和队尾元素、获取队列长度和判断空列队等操作。
队列不提供遍历的方法,也不提供迭代器。
这里写图片描述
如上图所示,插入操作将新的数据元素插到队尾,删除操作则将队头数据元素删掉,这种结构即可保证最先进入队列的数据元素可以最先出队列。

队列操作
  • push()
    这里写图片描述
    如上示例演示了队列的插入操作,以及证明了插入操作总是在队尾进行。
  • pop()
    这里写图片描述
    如图所示,删除操作总是删掉队头的数据元素。
队列实现代码

以下是STL中对于队列的实现:

template <class T, class Sequence=deque<T>>
class queue {

...

protected:
  Sequence c;
public:
  bool empty() const { return c.empty(); }
  size_type size() const { return c.size(); }
  reference front() { return c.front(); }
  const_reference front() const { return c.front(); }
  reference back() { return c.back(); }
  const_reference back() const { return c.back(); }
  void push(const value_type& x) { c.push_back(x); }
  void pop() { c.pop_front(); }
};

...

}

实际上,如同 stack 一般, 在 STL 中队列也是作为一种适配器出现的。

几乎所有的序列式容器都支持在两端插入和删除数据元素的操作,若以某种序列式容器为底部结构,只保留其一端的插入接口和另一端的删除接口,使其符合先进先出的特性,便轻而易举的形成了一个队列。

STL 中以 deque 为默认的底部容器,实现代码非常简单。

当然,我们可以为其制定适配容器,如下是演示示例:

这里写图片描述

以上简单介绍了STL中队列的使用及原理。

——谢谢!


参考资料

【作者:果冻 http://blog.csdn.net/jelly_9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值