首页
登录 | 注册

STL容器适配器——stack、queue、priority_queue

1、简介
STL中提供的三种适配器可以由某一种顺序容器去实现。默认下stack 和queue 基于deque  容器实现,priority_queue  则基于vector 容器实现。当然在创建一个适配器时也可以指定具体的实现容器,创建适配器时在第二个参数上指定具体的顺序容器可以覆盖适配器的默认实现。 由于适配器的特点,一个适配器不是可以由任一个顺序容器都可以实现的。  

2、栈stack
特点是后进先出,所以它关联的基本容器可以是任意一种顺序容器,因为这些容器类型结构都可以提供栈的操作有求,它们都提供了push_back  、pop_back 和back  操作。 
 
操作函数:
1).empty() 堆栈为空则返回真 
2).pop() 移除栈顶元素 
3).push() 在栈顶增加元素 
4).size()  返回栈中元素数目 
5).top() 返回栈顶元素 

3、队列queue
特点是先进先出,适配器要求其关联的基础容器必须提供pop_front 操作,因此其不能建立在vector 容器上。 

 操作函数:  
1).back() 返回一个引用,指向最后一个元素 
2).empty() 如果队列空则返回真 
3).front() 返回第一个元素 
4).pop() 删除第一个元素 
5).push() 在末尾加入一个元素 
6).size()  返回队列中元素的个数 

4、优先队列priority_queue
 C++优先队列类似队列,但是在这个数据结构中的元素按照一定的断言排列有序。 默认是降序排列,
less    这是按值大的优先 greater这是按值小的优先,
priority_queue> 默认的是从大到小排序
操作方法:
1).empty() 如果优先队列为空,则返回真 
2).pop() 删除第一个元素 
3).push() 加入一个元素 
4).size()  返回优先队列中拥有的元素的个数 
5).top() 返回优先队列中有最高优先级的元素 

相关文章

  •        应用需求:在docker swarm环境下,希望某app所在的容器能在多个node上运行,则docker service create时镜像文件从registry中获取.         考虑到要使用docker swarm ...
  • 为了更好的使STL适合.net开发,Visual C++产品组,在2005版的Visual C++中重新设计了STL,并命名为STL.NET,从Beta1版本的产品中开始提供.在STL.NET的设计中,STL的实现使用了CLI泛型和C++模 ...
  • Java集合详解2:LinkedList和Queue
    具体代码在我的GitHub中可以找到 喜欢的话麻烦star一下哈 https://h2pl.github.io/2018/05/09/collection2 我的个人博客主要发原创文章,也欢迎浏览 https://h2pl.github.i ...
  • Java集合详解1:ArrayList,Vector与Stack
    "Java集合详解系列"是我在完成Java基础篇的系列博客后准备开始写的新系列. 之前的Java基础系列博客首发于我的个人博客:https://h2pl.github.io/ 之所以把这三个集合类放在一起讲解,是因为这三 ...
  • 发现做了这么多年的嵌入式开发,还有朋友搞不清楚stack & heap的区别,在阅读<Operating Systems_Three Easy Piece>时,里面的一段解释觉得非常好! C programs use t ...
  • 使用Xamarin.Forms的企业应用程序模式(电子书)--容器化微服务
    开发客户端 - 服务器应用程序的重点是建立在每个层中使用特定技术的分层应用程序.这样的应用通常被称为单片应用,并且被封装在用于峰值负载预分配的硬件上.这种开发方法的主要缺点是每个层级组件之间的紧密耦合,各个组件不能轻易缩放,并且测试成本.一 ...

2019 unjeep.com webmaster#unjeep.com
12 q. 0.013 s.
京ICP备10005923号