C++ 11 STL中常用容器分类和对比
STL容器分类1,顺序容器 sequence containersarrayvectordequelistforward-list 2,关联容器 associative containerssetmultisetmapmultimap3,无序容器 unordered containers (非标准,也可以划分到关联容器)hash_sethash_multisethash_maphash_multi
·
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版本表示内容可以重复。
另外发现有些网友的总结也很好,大家可以都看看便于理解:
- https://blog.csdn.net/gcs6564157/article/details/65443202
- https://blog.csdn.net/qq_14898543/article/details/51381642
更多推荐
已为社区贡献1条内容
所有评论(0)