Skip to content

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允许存储有重复的元素 如果要修改某一个元素值,必须删除原有的元素再插入新元素