• 31、STL中stack和queue的实现


    stack

    stack(栈)是一种先进后出(First In Last Out)的数据结构,只有一个入口和出口,那就是栈顶,除了 获取栈顶元素外,没有其他方法可以获取到内部的其他元素,其结构图如下:

     stack这种单向开口的数据结构很容易由双向开口的deque和list形成,只需要根据stack的性质对应移除某 些接口即可实现,stack的源码如下:

    从stack的数据结构可以看出,其所有操作都是围绕Sequence完成,而Sequence默认是deque数据结构。 stack这种“修改某种接口,形成另一种风貌”的行为,成为adapter(配接器)。常将其归类为container adapter而非container

    stack除了默认使用deque作为其底层容器之外,也可以使用双向开口的list,只需要在初始化stack时,将 list作为第二个参数即可。由于stack只能操作顶端的元素,因此其内部元素无法被访问,也不提供迭代 器。

    queue

    queue(队列)是一种先进先出(First In First Out)的数据结构,只有一个入口和一个出口,分别位于最 底端和最顶端,出口元素外,没有其他方法可以获取到内部的其他元素,其结构图如下:

    类似的,queue这种“先进先出”的数据结构很容易由双向开口的deque和list形成,只需要根据queue的性质 对应移除某些接口即可实现,queue的源码如下:

    从queue的数据结构可以看出,其所有操作都也都是是围绕Sequence完成,Sequence默认也是deque数据 结构。queue也是一类container adapter。

    同样,queue也可以使用list作为底层容器,不具有遍历功能,没有迭代器。

  • 相关阅读:
    ParamCount、ParamStr
    写一个可拖动的 TShape 回复 "韦韦" 的问题
    读十六进制文本到 Btye 数组的函数 回复 "峰哥!!!" 的问题
    网站速度优化
    [新功能]新增分类浏览页面
    [CN.Text开发笔记]嵌套Repeater的问题
    中秋祝福
    10 Golden rules for publishing your blog
    HttpCompressionModule 6的一个Bug及使用效果
    [CN.Text开发笔记]OnInit与运行期数据绑定
  • 原文地址:https://www.cnblogs.com/crbhf/p/15072748.html
Copyright © 2020-2023  润新知