容器:顾名思义,我的理解就是把同一种数据类型括起来,作为一捆。如vector<int> ,vector就是个容器,里面全是一个个的int型数据。

容器包括三大块:

顺序型容器:

(1)vector          可以直接通过[ ]来访问。可以从后面插入与删除。因为内存连续,拷贝复制会造成内存块的拷贝。    调用得#include<vector>  :不在乎效率,可选。

(2)deque   vector能用的,deque也能用,只是deque双向的。头部也能快速插入和删除(pop)。          调用得#include<deque>  :重点关心向量两端插入,删除操作时,可选。

(3)list      list是一个双向链表。在插入删除时,内存不需要拷贝,通过指针来实现访问。(随机访问需要遍历)     调用得#include<list>  :出现大量删除,插入操作时,可选。

关联型容器:

(1)set    该容器内的数是唯一的。如果需要修改某数,不能直接修改。得删除再插入。              调用得#include<set>  :用二叉树,节点(类似指针)操作。不需要内存移动和拷贝。

(2)map    该容器内的数值是唯一的。                                    调用得#include<map>

容器适配器:

STL 中包含三种适配器:栈stack 、队列queue 和优先级priority_queue 。

适配器是容器的接口,它本身不能直接保存元素,它保存元素的机制是调用另一种顺序容器去实现,即可以把适配器看作“它保存一个容器,这个容器再保存所有元素”。

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

由于适配器的特点,一个适配器不是可以由任一个顺序容器都可以实现的。

栈stack 的特点是后进先出,所以它关联的基本容器可以是任意一种顺序容器,因为这些容器类型结构都可以提供栈的操作有求,它们都提供了push_back 、pop_back 和back 操作;

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

优先级队列priority_queue 适配器要求提供随机访问功能,因此不能建立在list 容器上。

   

最新文章

  1. 树莓派3B更新软件
  2. JavaScript的Tab切换
  3. stm8的IIC库的使用
  4. JavaScript学习笔记6 之经典神坑题整理
  5. 【Construct Binary Tree from Preorder and Inorder Traversal】cpp
  6. cocos2dx3.0-执行cocos compile -p win32 命令出现错误 MSB8020 以及编译出来的exe 无法打开的问题
  7. 《炉石传说》建筑设计欣赏(7):采用Google.ProtocolBuffers处理网络消息
  8. 康复计划#1 再探后缀自动机&amp;后缀树
  9. IE的hack问题浅谈
  10. jquery-ajax实现文件上传异常处理web.multipart.MultipartException
  11. RPC基于http协议通过netty支持文件上传下载
  12. ubuntu-18.04 设置开机启动脚本
  13. java面试问题收集(2)
  14. 在Intellij IDEA中使用Maven的方式将项目导出为jar包
  15. python中read()、readline()、readlines()函数
  16. On the Bias/Variance tradeoff in Machine Learning
  17. Eclipse使用Maven创建Dynamic Web Project
  18. 放弃winform的窗体吧,改用html作界面,桌面应用程序UI的新的开发方式。
  19. P1439 【模板】最长公共子序列
  20. HTML5+CSS3 表格设计(Table)

热门文章

  1. 14 微服务电商【黑马乐优商城】:day03-springcloud(Zuul网关)
  2. Servlet&amp;JSP复习笔记 01
  3. JavaScript之Date常用知识点
  4. 三十七、www服务nginx进阶
  5. javaScript 面向对象 触发夫级构造函数
  6. spring boot web 开发及数据库操作
  7. supervisor安装与配置实践版
  8. 常见的Java不规范代码
  9. python数据类型:Number数字
  10. OpenCV 图像平滑处理