• STL中提供了三种容器适配器:栈适配器、队列适配器和优先队列适配器。在使用STL时。可以向使用普通的栈stack、队列queue、和优先队列priority_queue那样去操作数据。
  • 栈的特征是后进先出,后入栈的元素先出栈,先入栈的元素后出栈,因此站适配器应该支持从栈顶添加删除元素以及访问元素的操作。容器vector、list和quque都满足栈操作的条件,因此都能作为栈适配器的底层容器,STL中默认使用deque作为栈适配器的底层容器。
  • 队列的特征是先进先出,先入队的元素先出队,后入队的元素后出队,因此队列适配器应该支持从队头删除元素、向队尾添加元素以及访问队头队尾元素的操作。由于容器vector在删除首元素时需要移动所有元素,因此不适合作为队列适配器的底层容器,应该选用list或者deque,STL中默认使用deque作为队列适配器的底层容器。
  • 优先队列在逻辑上与队列相似,一端插入元素和另一端删除元素,但是优先队列在元素中加入了权重的概念。优先队列中的元素并非像队列一样按照插入的顺序依次排列,而是根据元素的权重排列。添加元素时按照元素优先级插入到相应的位置,删除元素时将优先级最高的元素删除。
  • 优先队列中权重相邻的元素在底层容器中并不相邻。实际上优先队列利用底层容器实现了一个队,堆顶的元素优先级最高。堆背后的数据结构是一个二叉树,底层容器中的元素就是二叉树中的结点,二叉树通过顺序容器的下标存储父子结点之间的关系。
  • 优先队列的插入删除元素在底层容器实现的堆上进行操作。在堆的插入删除算法中,需要随机访问元素,因此不能使用list作为优先队列适配器的底层容器,比较而言deque也不太适合,STL中默认使用vector作为优先队列适配器的底层容器。
  • 栈适配器支持删除栈顶元素pop,向栈顶压入元素push,返回栈顶元素top;队列适配器支持删除队首元素pop,向队尾添加元素push,返回队首元素front,返回队尾元素back;优先队列适配器支持删除最高优先级元素pop,添加元素push,返回最高优先级元素top。

简述STL中容器适配器的概念相关推荐

  1. STL中容器vector迭代器失效的相关问题

    迭代器失效,有两个层面的意思: 无法通过迭代器++,–操作遍历整个stl容器.记作: 第一层失效. 无法通过迭代器存取迭代器所指向的内存. 记作: 第二层失效. vector是个连续内存存储的容器,如 ...

  2. STL之容器适配器queue类-急流勇进篇(五)

    #include <iostream> #include <queue> #include <string>using namespace std;int main ...

  3. C++ STL : 模拟实现STL中的容器适配器priority_queue

    目录 priority_queue 文档介绍 实现思路 思路 仿函数 实现 priority_queue 文档介绍 文档介绍 优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含 ...

  4. C++ STL : 模拟实现STL中的容器适配器stack和queue

    目录 什么是容器适配器 stack stack的文档介绍-(来自cplusplus) stack的实现 queue queue的文档介绍-(来自cplusplus) queue的实现 什么是容器适配器 ...

  5. C++STL总结笔记(一)—— 容器和容器适配器

    文章目录 前言 一.概念 1.1 顺序容器 1.2 容器适配器 1.3 关联容器 二.程序示例 1. vector和Set自定义数据类型的访问 2.vector容器嵌套 3.list容器排序 4.pa ...

  6. STL 容器简介:C++ 容器:顺序性容器、关联式容器和容器适配器

    STL标准容器类简介 标准容器类 说明 顺序性容器 vector 从后面快速的插入与删除,直接访问任何元素 deque 从前面或后面快速的插入与删除,直接访问任何元素 list 双链表,从任何地方快速 ...

  7. C++中STL中的大、小、相等概念

    1.STL的大.小.相等概念 STL中关联容器内部的元素是排序的.STL中的许多算法也涉及排序.查找.这些容器和算法都需要对元素进行比较,有的比较是否相等,有的比较元素大小. 在STL中,默认情况下, ...

  8. STL中“大”、“小”和“相等”的概念

    STL 中关联容器内部的元素是排序的.STL 中的许多算法也涉及排序.查找.这些容器和算法都需要对元素进行比较,有的比较是否相等,有的比较元素大小. 在 STL 中,默认情况下,比较大小是通过< ...

  9. 6-5-1:STL之stack和queue——stack和queue的快速入门、常用接口以及适配器的概念

    文章目录 一:简单介绍 (1)stack (2)queue 二:stack和queue的应用 三:stack和queue的模拟实现--适配器 一:简单介绍 stack和queue是STL中的两个容器, ...

  10. 深入解析C++ STL中的常用容器

    转载:http://blog.csdn.net/u013443618/article/details/49964299 这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中的 ...

最新文章

  1. 关于某日访问次数最多的IP的topK问题的三种解法
  2. 【Qt】通过QtCreator源码学习Qt(十):多国语言支持
  3. 微信小程序直播开启公测了,与平台直播有何不同?小程序直播如何搭建
  4. 2019年CV领域,值得一看的综述文章!
  5. OpenCV黑白图像增强——灰度级切片
  6. [置顶]C#执行Excel宏模版的方法
  7. 神奇的机械动态图,看了一遍又一遍!最后一个真神奇~
  8. python接口自动化测试框架实战从设计到开发_Python接口自动化测试框架实战 从设计到开发...
  9. vue 如何获取图片的原图尺寸_公众号封面图片尺寸是多少?如何在公众号里制作封面图?...
  10. python如何批量下载邮箱全部附件_Python编写执行测试用例及定时自动发送最新测试报告邮件...
  11. 电子书下载:ASP .NET 4 高级程序设计.第4版
  12. Kindle Fire调试,以及它没有Orientation Sensor
  13. Blog运用感想 (ZT)
  14. Pytorch对梯度进行rescale
  15. 【精度】概率论之概念解析:边缘化(Marginalisation)
  16. 业务层战略制定的思路和方法_如何确保公司年度战略目标落地—打造战略执行的方法论...
  17. 远程控制计算机显示为什么不能满屏,win7系统连接远程桌面却不能全屏显示的解决方法...
  18. JAVA代码审计——SQL注入靶场审计01
  19. windows下载并安装JDK
  20. 零基础学习Hadoop

热门文章

  1. Java开发面试题汇总 -- 精选版(附答案)
  2. php使用到的函数记录一
  3. 20.10 for循环 20.11/20.12 while循环 20.13 break跳出循环 20.14 continue结束本次循环 20.15 exit退出整个脚本...
  4. Docker Centos安装Openssh
  5. 开源日志系统log4cplus(五)
  6. jQuery实现点击显示和隐藏内容
  7. azure mysql无法连接_java - 无法从Azure的JAVA功能连接到Azure的MySQL数据库 - SO中文参考 - www.soinside.com...
  8. 小知识--DOS命令2
  9. Lan Xiang's Square nyoj 1099(已经四边形四点坐标 如何判断正方形)
  10. suse 查看java版本_如何查看当前Linux的版本