C++ STL容器¶
本篇文章对C++的STL容器做一些总结,在模拟器开发中,经常需要用到STL容器,通过对常见容器的分析,能够让我们在开发模拟器的过程中选择合适的容器实现我们的设计。
STL容器¶
容器可以分为两大类
序列式容器。
关联式容器。都是有序的
- 序列式容器(可以在初始化时指定大小)
- vector
- deque
- list
- 关联式容器(迭代器仅支持++操作)
- array
- queue
- map
- multimap
- pair
- unordered_set
- unordered_multiset
- unordered_map
Vector¶
- 类似于数组,当我们需要数组时可以考虑Vector
- vector会多申请一些空间来提高效率,但当数组空间(capacity)不足时,会通过:分配新空间->复制元素->释放原空间 的操作来实现扩容。
- 删除元素时,不会释放空间(capacity)
- 删除和插入的效率低,在尾部操作的效率高。删除元素会导致迭代器失效,需要注意更新迭代器
- 随机访问效率高
map¶
deque¶
- 双端队列,两端插入元素效率高
list¶
双向链表
set/multiset¶
为了快速检索、去重、排序
set存储一组无重复的元素,multiset允许存储有重复的元素 如果要修改某一个元素值,必须删除原有的元素再插入新元素