容器的共通能力

C++模板是容器的概念

理论提高:所有容器提供的都是值(value)语意,而非引用(reference)语意。容器执 行插入元素的操作时,内部实施拷贝动作。所以 STL 容器内存储的元素必须能够被拷贝(必 须提供拷贝构造函数)。

  1. 除了 queue 与 stack 外,每个容器都提供可返回迭代器的函数,运用返回的迭代器就可以访问元素。

  2. 通常 STL 不会丢出异常。要求使用者确保传入正确的参数。

  3. 每个容器都提供了一个默认构造函数跟一个默认拷贝构造函数。

  4. 如已有容器 vecIntA。

  5. vectorvecIntB(vecIntA); //调用拷贝构造函数,复制 vecIntA 到 vecIntB 中。

  6. 与大小相关的操作方法(c 代表容器): c.size(); //返回容器中元素的个数 c.empty(); //判断容器是否为空

  7. 比较操作(c1,c2 代表容器):

     c1==c2 判断 c1 是否等于 c2 c1!=c2 判断 c1 是否不等于 c2c1=c2 把 c2 的所有元素指派给 c1
    

各个容器的使用时机

  1. vector的使用场景:比较软件历史操作记录的存储,我们经常要查看历史记录,比如上一次的记录,上上次的记录,但却不会去删除记录,因为记录是事实的描述

  2. deque的使用场景:比如排队购票系统,对排队的存储可以采用deque,支持头端的快速移出,尾端的快速添加,如果采用vector,则头端移出时,会移动大量的数据,速度慢

  3. vector与deque的比较

     1  vector.at()比deque.at()效率高,比如vector.at(0)是固定的,deque的开始位置是不固定的2 如果有大量释放操作的话,vector花的时间更少,这跟二者的内部实现有关3 deque支持头部的快速插入与快速移出,这是deque的优点
    
  4. list 的使用场景:比如公交车乘客的存储,随时可能有乘客下车,支持频繁的不确实 位置元素的移除插入。

  5. set 的使用场景:比如对手机游戏的个人得分记录的存储,存储要求从高分到低分的 顺序排列。

  6. map 的使用场景:比如按 ID 号存储十万个用户,想要快速要通过 ID 查找对应的用 户。二叉树的查找效率,这时就体现出来了。如果是 vector 容器,最坏的情况下可 能要遍历完整个容器才能找到该用户

c++中容器(STL)的共性与使用的时机相关推荐

  1. vector 作为dll 接口参数_DLL中传递STL参数,vector对象作为dll参数传递等问题(转)...

    STL使用模板生成,当我们使用模板的时候,每一个EXE,和DLL都在编译器产生了自己的代码,导致模板所使用的静态成员不同步,所以出现数据传递的各种问题,下面是详细解释. 原因分析:一句话-----如果 ...

  2. DLL中传递STL参数(如Vector或者list等)会遇到的问题[转载]

    最近的一个项目中遇到了调用别人的sdk接口(dll库)而传给我的是一个vector指针,用完之后还要我来删除的情况.这个过程中首先就是在我的exe中将其vector指针转为相应指针再获取vector中 ...

  3. C++中的STL和MFC

    C++中的STL和MFC 转载 2014年07月18日 18:51:40 一.STL简介  STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称. ...

  4. C++中容器的分类以及相关用法

    C++中容器的分类以及相关用法 C++中的容器类型及使用 容器的分类 array 数组 vector 向量 list 列表 deque队列 关联容器 迭代器 C++中的容器类型及使用 容器的概念:   ...

  5. 镜像和linux关系,Docker中容器和镜像的关系【通俗易懂】

    docker中容器和镜像的关系是什么? 最近学习了docker,大多人感觉容器和镜像学的有点模糊. 特别是镜像和容器,感觉完全分不开,所以在此学习,然后总结了一下,便于后面的学习. 这是我总结的镜像总 ...

  6. 顺序容器STL::list用法

    C++ Code: // 顺序容器STL::list用法 #include<iostream> #include <stdio.h> #include <stdlib.h ...

  7. ie6中容器内浮动元素的border边框不完全显示的bug

    ie6中容器内浮动元素的border边框不完全显示的bug html <div class="hrListBox">         <div class=&qu ...

  8. docker中容器与宿主机之间的网络关系

    接上一篇jupter远程访问 docker中容器与宿主机之间的网络关系 一.PC上的网络关系 1.网卡的物理地址 网卡的物理地址(MAC地址):是网卡的唯一标识.由生产厂商写入网卡中.MAC地址就如同 ...

  9. docker中容器与容器之间通讯

    概述 Docker 中存在多个容器时,容器与容器之间经常需要进行通讯,例如nacos访问mysql,redis集群中各个节点之间的通讯. 解决方案 Docker 中容器与容器之间进行通讯的解决方案一般 ...

  10. 3D Slicer 中导入STL文件

    3D Slicer 中导入STL文件,模型不显示 两种方法: 1.点击"DATA" 获取 STL 文件路径 2. 直接将STL 文件拖拽到视图中. 文件不显示的原因是STL文件的路 ...

最新文章

  1. 7秒钟的记忆?Facebook提出DL新算法,东南大学90后博士新作
  2. [20150205]分析函数ntile.txt
  3. 框架页,URL中文参数乱码
  4. 【正一专栏】新赛季欧冠小组赛猜想
  5. 环京机柜数量惊人 数据中心建设应避免一哄而上
  6. 研究生期间应该如何充实度过
  7. 2019蓝桥杯省赛---java---B---3(数列求值)
  8. React开发(123):ant design学习指南之form中的属性isFieldTouched
  9. Sharepoint定制的时候应该注意的事项
  10. Tomcat下载与安装
  11. html5长按 排序,H5 长按 拖拽排序的实现
  12. 企业实战|基于Cobbler实现多版本系统批量部署
  13. qstring转string
  14. Windows API Unicode 和 多字节转化demo
  15. IntelliJ手动安装python与scala插件
  16. 【优化算法】大鼠群优化器算法(RSO)【含Matlab源码 1837期】
  17. 【高等数学】上册知识点复习
  18. 行人重识别论文阅读11-BDTR 红外光行人重识别
  19. 有了规范,第二代曲面电视会更火吗?
  20. D3.js的v5版本入门教程(第一章)—— 如何在项目中使用D3.js

热门文章

  1. Python3.5-20190501-廖老师的
  2. Unity经典游戏教程之:是男人就下100层
  3. numpy 辨异(三)—— hstack/column_stack,linalg.eig/linalg.eigh
  4. 怎么用代码制作WordPress的归档页面
  5. java架构师之路:JAVA程序员必看的15本书的电子版下载地址
  6. Collection 和 Map接口及其实现类总结
  7. 输入参数的数目不足_sklearn.decomposition.PCA 参数速查手册
  8. 广联达2018模板算量步骤_广联达gtj2021实操案例,新增6大板块,快速提高算量效率...
  9. java仿qq空间音乐播放_完美实现仿QQ空间评论回复特效
  10. java1a2b3c4d5e6f_用两个线程,一个输出字母,一个输出数字,交替输出1A2B3C4D...26Z...