STL源码之stack深入学习

学完STL中vector, list, deque这三个较为复杂序列式容器之后,序列式容器中还剩下stack, queue以及priority-queue三部分内容。我们前面提及到,stack和queue由于是以deque为底部结构,技术上被归类为一种配接器(adapter)。

  1. stack概述
    (1)stack是一种先进后出(First In Last Out)的数据结构。它只有一个出口。
    (2)stack允许新增元素、移除元素、取得最顶端元素。
    (3)stack的结构:stl源码图4-18
  2. stack定义完整列表
    (1)SGI STL以deque作为缺省情况下stack的底部结构。(将deque接口改变,使其符合“先进后出”的特性)
    (2)由于stack是以底部容器完成其所有工作,而具有这种“修改某物接口,形成另一种风貌”的性质者,称为adapter。
    (3)因此,STL stack往往不被归类为container,而被归类为container adapter。
  3. stack没有迭代器
    (1)stack所有元素的进出都必须符合“先进后出”的条件,只有stack顶端的元素,才有机会被外界取用。
    (2)stack不提供走访功能,也不提供迭代器。
  4. 以list作为stack的底层容器
    (1)除了deque之外,list也是双向开口的数据结构。上述stack源码中使用的底层容器的函数有empty, size, back, push_back, pop_back等等,list都具备。
    (2)若以list为底部结构并封闭其头端开头,一样能够轻易形成一个stack。
  5. 实例(以list为底层容器)

     

发表评论

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