美文网首页
C++ 容器梳理

C++ 容器梳理

作者: 王技术 | 来源:发表于2021-08-28 21:17 被阅读0次

C++ 容器包括

顺序存储结构:
vector list dequeue
关联存储结构:
set map multiset multimap

vector

连续存储结构,每个元素字内存上都是连续的
支持高效的随机访问和在尾端插入和删除操作,但是其他部位插入和删除操作效率低下

deque

连续存储结构,其每个元素在内存上都是连续的,类似于 vector
不同之处在于 deque 提供了量级数组结构,第一级完全类似于 vector,另一级维护容器首地址
这样,deque 除了具有 vector 功能之外,还支持高效首端插入删除操作

list

非连续存储结构,具有双链表结构,每个元素维护一对前向指针和后向指针,因此支持前向后向遍历
支持高效的随机插入删除操作,但是随机访问效率低下,且由于需要维护额外指针,开销较大

顺序存储结构的选择
  • 若是需要随机访问,不关心插入和删除效率,则选择 vector
  • 若已知需要存储的个数,选择 vector
  • 若需要随机插入和删除(非首尾端)选择 list,这样不能高效随机访问
  • 只有在首端需要插入删除的时候,才选择 deque,否则都是 vector
  • 当存储大型类对象,list 由于 vector,虽然可以使用 vector 来指向对象指针,这样同样高效,但是指针的维护容易出错,不推荐
capacity V.S size
  • capacity是容器需要增长之前,能够盛的元素总数;只有连续存储的容器才有capacity的概念(例如vector,deque,string),list不需要capacity。
  • size是容器当前存储的元素的数目。
  • vector默认的容量初始值,以及增长规则是依赖于编译器的。
vector 存储自定义类对象时,自定义类对象必须满足
  • 有可调用的无参构造函数,默认的自定义的都可
  • 有可用的拷贝赋值函数,默认的自定义的都可
迭代器 iterator
  • vector 和 deque 的迭代器支持算数运算,list 的迭代器只能进行 ++/-- 操作,不支持普通算数运算
set
  • set 里面每个元素只存有一个 key,它支持高效的关键字查询操作,对应数学中的集合
  • 存储同一类型的数据元素,这点和 vector queue 相同
  • 每个元素的值唯一,没有重复元素
  • 根据元素的值自动排列大小
  • 无法直接修改元素
  • 高效插入删除操作

这篇写的不错

map
  • map 对应数学中的映射,是一种 key-value 的容器
  • 高效的插入与删除
  • 快速查找
  • key 和 value 可以是任何需要的类型
  • 可以根据 key 修改 value
  • 支持下标[]操作

相关文章

  • C++ 容器梳理

    C++ 容器包括 顺序存储结构:vector list dequeue关联存储结构:set map multise...

  • [C++] STL 容器

    参考:[C++] STL 容器 (一) - 基本介紹[C++] STL 容器 (二) - Iterator 部分示例:

  • C++boolan part3_week1

    C++容器的介绍及使用 C++中的容器大致可以分为两个大类:顺序容器和关联容器。顺序容器中有包含有顺序容器适配器。...

  • C++ STL(1)

    C++ STL(1) from my csdn blog C++标准模板库 容器C++标准模板库提供了10种容器基...

  • 算法分析与设计之C++STL

    C++ 迭代器 容器

  • 算法分析与设计之C++STL

    C++ 迭代器 容器

  • C++常用容器

    C++ 有两类常用容器,分别是顺序容器和关联容器,顺序容器例如vector,list,queue,关联容器例如ma...

  • C++ STL 之 vectot(三)

    今天我们继续更新 C++ STL 中 vector 容器的使用 vector 容器增加元素 vector 容器增加...

  • stl

    容器: c++中有两种类型的容器:顺序容器和关联容器,顺序容器主要有:vector、list、deque等。其中v...

  • STL学习笔记之容器篇

    容器 条款1:仔细选择你的容器 C++提供了很多可供程序员使用的容器:(1) 标准STL序列容器:vector,...

网友评论

      本文标题:C++ 容器梳理

      本文链接:https://www.haomeiwen.com/subject/wqabiltx.html