C++ STL常见数据结构(容器)分类
2024-10-05 21:24:36
- vector:(连续的空间存储,可以使用[]操作符)快速的访问随机的元素,快速的在末尾插入元素,但是在序列中间的插入,删除元素要慢,而且如果一开始分配的空间不够的话,可能重新分配更大空间,拷贝的性能开销较高。
- deque:(小片的连续,小片间用链表相连,实际上内部有一个map的指针,因为知道类型,所以还是可以使用[],只是速度没有vector快)快速的访问随机的元素,快速的在开始和末尾插入元素,但随机的插入,删除元素要慢,空间的重新分配要比vector快,重新分配空间后,原有的元素不需要拷贝。对deque的排序操作,可将deque先复制到vector,排序后在复制回deque。
- list:(每个元素间用链表相连)访问随机元素不如vector快,随机的插入元素比vector快,对每个元素分配空间,所以不存在空间不够,重新分配的情况。
- set:内部元素唯一,用一棵平衡树结构来存储,因此遍历的时候就排序了,查找也比较快的哦。
- map:一对一的映射的结合,key不能重复。
- stack:栈,必须结合其他的容器使用,stl中默认的内部容器是deque。先进后出,只有一个出口,不允许遍历。
- queue:是受限制的deque,内部容器一般使用list较简单。先进先出,不允许遍历。
- unordered_set、unordered_map:散列表,Hash表。快速查找,快速插入,但不能随机访问,另外空间消耗大(这里依赖于散列函数)。
- priority_queue:优先队列,用于实现最大堆(默认),最小堆。最终在队列里总是top出最大的元素。
最新文章
- The integer promotion.
- java socket 网络编程常见异常
- web开发的步骤
- Codeforces Testing Round #12 C. Subsequences 树状数组
- Xcode 7安装KSImageNamed失败解决方法
- 剑指Offer11 在O(1)内删除链表结点
- maven创建web项目
- Axis2 java调用.net webservice接口的问题(郑州就维)
- 关于NSRunLoop和NSTimer的深入理解
- 从文章";避免复制与粘贴";到文章";Extract Method";的反思(3)
- 使用Flex 和 Red5开发简单视频直播功能
- poj 3180 The Cow Prom(tarjan+缩点 easy)
- 《自己动手写CPU》写书评获赠书活动结果
- TakeColor 屏幕取色器 8.0 中文绿色版
- VS中代码覆盖问题
- Ansible 脚本运行一次后,再次运行时出现报错情况,原因:ansible script 的格式不对,应改成Unix编码
- ajax批量删除功能的实现源代码
- echarts3使用总结2
- webGl中实现clipplane
- 解决Jedis链接报超时异常和connection reset异常的方法