stl之适配器容器——stack, queue, priority_queue
来源:互联网 发布:三娃被软件缠故事 编辑:程序博客网 时间:2024/04/28 21:46
stack
stl实现stack的方法:以某种既有容器作为底部结构,将其接口改变,使之符合“先进后出”的特性,形成一个stack。这种“修改某物接口,形成另一种风貌”的方式,成为adapter(适配器),在设计模式中又叫adapter模式,因此,stack被归类为container adapter。其方法包括:empty, size, top, push, pop.
要作为stack的底层容器,需要提供以下几种方法:
empty,size,back,push_back,pop_back
所以,stl库中的vector,list, slist, deque都可以作为stack的底层容器。另外,stl中stack默认的底层容器是deque。
ps:由于stack的先进后出性质,stack不提供遍历功能,也没有迭代器。
queue
queue是一种“先进先出”容器,支持的方法有:empty, size, front, back, push, pop;其实现方式同stack一样,是用适配器模式实现。要作为stack的底层容器,需提供:empty, size, front, back, push_back, pop_back方法;因此,stl中deque和list都可以作为queue的底层容器,缺省使用deque实现。
priority_queue
这个也是个用适配器模式实现的容器,缺省使用vector,利用heap进行排序。
缺省情况下,priority_queue利用一个max_heap实现。后者以一个vector表现出complete binary tree,priority_queue可用于按优先级(权值)排序的任务。
方法:
empty, size, top, push, push, pop
实现依赖与heap相关的方法:
make_heap //创建一个最大堆复杂度为n
pop_heap //将头元素和尾元素交换,然后将除最大元素外的其余元素重排,复杂度为lg(n)
push_heap //在堆中插入一个元素 复杂度为lg(n)
相关知识参考堆排序。
参考资料:侯捷《stl源码剖析》
- stl之适配器容器——stack, queue, priority_queue
- STL之容器适配器:stack,queue , priority_queue
- stl 顺序容器适配器之stack, priority_queue, queue用法
- 容器适配器:stack、queue、priority_queue
- STL 笔记(三) 容器适配器 stack、queue、priority_queue
- STL 笔记(三) 容器适配器 stack、queue、priority_queue
- 八、STL中的容器适配器stack、queue、priority_queue
- C++之STL(十一):容器适配器(stack、 queue 、priority_queue)源码浅析与使用示例
- Chapter 9.容器适配器stack、queue、priority_queue
- Chapter 9.容器适配器stack、queue、priority_queue
- 容器适配器(Adapter):stack,queue,priority_queue
- 容器适配器(stack,queue,priority_queue)
- 从零开始学C++之STL(十一):容器适配器(stack、 queue 、priority_queue)源码浅析与使用示例
- 从零开始学C++之STL(十一):容器适配器(stack、 queue 、priority_queue)源码浅析与使用示例
- STL常用容器用法之——queue和priority_queue
- C++容器-4容器适配器stack、queue、priority_queue
- STL--stack、queue、priority_queue
- STL - stack&queue&priority_queue
- Ruby-类和对象
- ZOJ 3492Kagome Kagome
- 经典SQL语句大全
- 理解网络模型各层协议的分工及由来
- A1109. Group Photo (25)
- stl之适配器容器——stack, queue, priority_queue
- poj1190 生日蛋糕 dfs神剪枝
- C与Java的区别
- ZOJ 3490String Successor(模拟)
- ZOJ-3914-Semantic Version【模拟】
- SSH框架探索
- ZOJ 3488Conic Section
- iOS基础开发练习 国际棋盘 的设计
- 基因数据处理14之BWA三种方式bwa、BWA_SW、BWA_MEM使用