C++ 11 STL中常用容器分类和对比

STL容器分类

1,顺序容器 sequence containers
  • array
  • vector
  • deque
  • list
  • forward-list 
2,关联容器 associative containers(红黑树实现)
  • set
  • multiset
  • map
  • multimap
3,无序容器 unordered containers (hash表实现)(非标准,也可以划分到关联容器
  • hash_set
  • hash_multiset
  • hash_map
  • hash_multimap

STL容器对比

容器的特性跟背后内存的分布息息相关,从上图可以很清晰的看出。

1,array、vector、deque的内存是连续的,连续的内存空间必定是支持随机访问的,其余容器则不具备该特点。其中array为固定长度,vector、deque为变长,vector只能单向扩充,deque可以双向扩充。

2,list、forward-list为链条式结构,这种结构在插入、删除时只需要局部调整非常方便。但是遍历时只能按照链条顺序依次遍历,查找起来并不迅速。

3,set、map背后的实现为红黑树,所以对查找具有先天的优势,但这种结构插入删除时会产生联动效应,所以并不适合做频发的删除、插入。其中各自multi版本表示内容可以重复。


另外发现有些网友的总结也很好,大家可以都看看便于理解:

  1. https://blog.csdn.net/gcs6564157/article/details/65443202
  2. https://blog.csdn.net/qq_14898543/article/details/51381642
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值