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
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐