1 vector

向量 相当于一个数组
    在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy()函数返回的大小,当超过此分配的空间时再整体重新放分配一块内存存储,这给人以vector可以不指定vector即一个连续内存的大小的感觉。通常此默认的内存分配能完成大部分情况下的存储。
   优点:(1) 不指定一块内存大小的数组的连续存储,即可以像数组一样操作,但可以对此数组
                  进行动态操作。通常体现在push_back() pop_back()
            (2) 随机访问方便,即支持[ ]操作符和vector.at()
            (3) 节省空间。
   缺点:(1) 在内部进行插入删除操作效率低。
            (2) 只能在vector的最后进行push和pop,不能在vector的头进行push和pop。
            (3) 当动态添加的数据超过vector默认分配的大小时要进行整体的重新分配、拷贝与释放

2 list
    双向链表
    每一个结点都包括一个信息快Info、一个前驱指针Pre、一个后驱指针Post。可以不分配必须的内存大小方便的进行添加和删除操作。使用的是非连续的内存空间进行存储。
   优点:(1) 不使用连续内存完成动态操作。
            (2) 在内部方便的进行插入和删除操作
            (3) 可在两端进行push、pop
   缺点:(1) 不能进行内部的随机访问,即不支持[ ]操作符和vector.at()
            (2) 相对于verctor占用内存多

3 deque
   双端队列 double-end queue
   deque是在功能上合并了vector和list。
   优点:(1) 随机访问方便,即支持[ ]操作符和vector.at()
            (2) 在内部方便的进行插入和删除操作
            (3) 可在两端进行push、pop
   缺点:(1) 占用内存多

使用区别:
     1 如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector
     2 如果你需要大量的插入和删除,而不关心随即存取,则应使用list
     3 如果你需要随即存取,而且关心两端数据的插入和删除,则应使用deque

======================================================================

拓展参考:

Cplusplus - List

Cplusplus - Deque

Cplusplus - Vector

STL提供了三个最基本的容器:vector,list,deque

转载于:https://www.cnblogs.com/mixer/archive/2011/01/07/2448103.html

STL vector list deque区别与实现相关推荐

  1. C++ 笔记(23)— STL vector 类(实例化 vector、末尾插入、指定位置插入、数组方式访问元素、指针方式访问元素、删除元素、大小与容量区别)

    1. vector 特点 vector 是一个模板类,提供了动态数组的通用功能,具有如下特点: 在数组末尾添加元素所需的时间是固定的,即在末尾插入元素的所需时间不随数组大小而异,在末尾删除元素也如此: ...

  2. 【C++ STL学习笔记】C++ STL序列式容器(array,vector,deque,list)

    文章目录 C++ STL容器是什么? 迭代器是什么,C++ STL迭代器(iterator)用法详解 迭代器类别 迭代器的定义方式 C++序列式容器(STL序列式容器)是什么 容器中常见的函数成员 C ...

  3. C++ STL容器——序列式容器(array、vector、deque、list)

    概述 1.C++ STL的容器分为三种,序列式容器,关联式容器,无序式容器,这里先说说常用的序列式容器. 2.array,vector,deque,list,forward_list这几种都是序列式容 ...

  4. vector和deque的区别?

    vector和deque的区别? vector概述 vector的数据结构 vector的构造与内存管理 deque deque概述 deque的构造与内存管理 vector和deque的区别 vec ...

  5. 对比vector、deque、list的优缺点

    1.vector 连续存储结构,每个元素在内存上是连续的:支持高效的随机访问和在尾端插入/删除操作,但其他位置的插入/删除操作效率低下:相当于一个数组,但是与数组的区别为:内存空间的扩展.vector ...

  6. 【STL容器讲解—deque】

    STL中deque容器讲解 deque容器的实现 相对于vector容器的区别 原因: deque内部工作原理 构造函数 容器操作 插入操作 deque容器的遍历操作 大小操作 插入和删除 数据存取 ...

  7. STL常用容器——deque容器的使用

    文章目录 STL常用容器--deque容器的使用 1.deque 容器简介 2.deque容器的构造函数 3.deque的赋值操作 4.deque大小操作 5.deque容器添加和删除元素 6.deq ...

  8. c++ vector 先进先出_C++ STL Vector(容器)学习

    本文参考博客链接及书籍: 侯捷老师的<STL 源码剖析> 在C++标准库中,STL容器是一些常用数据结构的实现,比如数组.链表.树.栈.队列.散列表.集合.映射表等,可以分为序列式(seq ...

  9. STL vector的几种清空容器(删除)办法

    1.为什么需要主动释放vector内存 来自 <https://blog.csdn.net/hellokandy/article/details/78500067> vector其中一个特 ...

最新文章

  1. RDKit | 基于Lipinski规则过滤化合物库
  2. S5700三层交换机 复杂网络环境设置默认路优先级实战
  3. 2021中大厂php+go面试题(1)
  4. 【python基础】list操作相关:扩充、条件查找【IndexError: list assignment index out of range】...
  5. 打印图形 字母倒三角
  6. ChinaJoy 第二天,是谁独得万千宠爱?
  7. 加快网站速度的最佳做法_(1)最小化http请求
  8. WINDOWS 一键host地址绑定
  9. android 扩展textview,Android可收缩/扩展的TextView【1】
  10. webstorm破解方法(亲测可用)
  11. Child returned status 1问题解决
  12. win10电脑新建Excel工作簿,后缀变成xlsm(正常本应该是xlsx)的解决办法
  13. U盘启动盘制作(步骤详细)
  14. 【leetcode刷题】[简单]441. 排列硬币(arranging coins)-java
  15. 【Java】 实现一个简单文件浏览器(1)
  16. C/C++ 由int (*p)[5]与int *p[5]引发的学习与思考
  17. java double类型保留三位小数
  18. php显示大写金额,PHP数字金额转换成中文大写显示
  19. 笔记:关于QMap使用时候的一点技巧
  20. 腾讯地图JSAPI GL实现文本标记的碰撞避让

热门文章

  1. 2022-2028年中国康复辅具行业市场研究及前瞻分析报告
  2. 2022-2028年中国绿冻石行业市场研究及前瞻分析报告
  3. leetcode 5. Longest Palindromic Substring 字符串中的最长回文数 逐步从O(n^2)优化至线性时间
  4. 【Spring】工厂模式解耦
  5. xshell问题汇总
  6. tf.get_variable
  7. 谷粒商城学习笔记——第一期:项目简介
  8. 摄像头PVD和CVD薄膜
  9. 腾讯 angel 3.0:高效处理模型
  10. 深度学习Dropout技术分析