STL源码之queue深入学习

queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口。queue允许新增元素、移除元素、从最底端加入元素、取得最顶端元素。

  1. queue概述
    (1)除了最底端可以加入、最顶端可以取出外,没有任何其他方法可以存取queue的其他元素。换言之,queue不允许有遍历行为。
    (2)将元素推入queue的操作称为push,将元素推出queue的操作称为pop
    stl源码图4-19
  2. queue定义源码
    (1)deque是双向开头的数据结构,若以deque为底部结构并封闭其底端的出口和前端的入口,便形成了一个queue。
    (2)SGI STL以deque作为缺省情况下的queue底部结构。
    (3)由于queue是以底部容器完成其所有工作,而具有这种“修改某物接口,形成另一种风貌”的性质者,称为adapter
    (4)因此,STL queue往往不被归类为container,而被归类为container adapter。
  3. queue跟stack一样没有迭代器
    queue所有元素的进出都必须符合“先进先出”的条件,只有queue顶端的元素,才有机会被外界取出。queue不提供遍历功能,也不提供迭代器。
  4. 也可以用list作为queue的底层容器
    (1)除了deque之外,list也是双向开口的数据结构。
    (2)上述queue源代码中使用的底层容器的函数有empty, size, front, back, push_front, push_back, pop_front, pop_back等等,list都具备。
    (3)因此若以list为底部结构并封闭其某些接口,一样能够轻易形成一个queue。
  5. 实例(以list为底层容器)

     

发表评论

电子邮件地址不会被公开。 必填项已用*标注