C++ STL常见数据结构(容器)分类

  1. vector:(连续的空间存储,可以使用[]操作符)快速的访问随机的元素,快速的在末尾插入元素,但是在序列中间的插入,删除元素要慢,而且如果一开始分配的空间不够的话,可能重新分配更大空间,拷贝的性能开销较高。
  2. deque:(小片的连续,小片间用链表相连,实际上内部有一个map的指针,因为知道类型,所以还是可以使用[],只是速度没有vector快)快速的访问随机的元素,快速的在开始和末尾插入元素,但随机的插入,删除元素要慢,空间的重新分配要比vector快,重新分配空间后,原有的元素不需要拷贝。对deque的排序操作,可将deque先复制到vector,排序后在复制回deque。
  3. list:(每个元素间用链表相连)访问随机元素不如vector快,随机的插入元素比vector快,对每个元素分配空间,所以不存在空间不够,重新分配的情况。
  4. set:内部元素唯一,用一棵平衡树结构来存储,因此遍历的时候就排序了,查找也比较快的哦。
  5. map:一对一的映射的结合,key不能重复。
  6. stack:栈,必须结合其他的容器使用,stl中默认的内部容器是deque。先进后出,只有一个出口,不允许遍历。
  7. queue:是受限制的deque,内部容器一般使用list较简单。先进先出,不允许遍历。
  8. unordered_set、unordered_map:散列表,Hash表。快速查找,快速插入,但不能随机访问,另外空间消耗大(这里依赖于散列函数)。
  9. priority_queue:优先队列,用于实现最大堆(默认),最小堆。最终在队列里总是top出最大的元素。

posted on 2018-03-09 13:42  枝桠  阅读(555)  评论(0编辑  收藏  举报

导航