C deque有什么区别 list vector (c的queue类)
本文目录导航:
C++,list,vector,deque有什么区别
Vector:C++容器模板中的大哥大,就像是一个加强版的队列,之所以这样说,是因为它不但有队列形式的索引,还能动态的添加扩充。
特点:把被包含的对象以数组的形式存储,支持索引形式的访问(这种访问速度奇快无比)。
但由此也产生了一个问题,由于数据存储形式的固定化,你如果想在他中间部位insert对象的话,搞不好会让你吃尽头。
因为他在分配空间的时候,可是成块分配的连续空间。
Deque:英文“double-ended-queue”。
名如其人,这是C++有序容器中闻名遐迩的双向队列。
他在设计之初,就为从两端添加和删除元素做了特殊的优化。
同样也支持随即访问,也有类似vector的[]操作符,但不要因此就把他和vector混为一潭。
特点:从本质上讲,他在分配内存的时候,使用了MAP的结构和方法。
化整为零,分配了许多小的连续空间,因此,从deque两端添加、删除元素是十分方便的。
最重要的一点:如果在不知道内存具体需求的时候,使用deque绝对是比vector好的。
List:模板中的双向链表。
设计他的目的可能就是为了在容器中间插入、删除吧,所以有得比有失,他的随机访问速度可不敢恭维。
而且没有[]操作。
特点:随机的插入、删除元素,在速度上占有明显的优势。
并且,由于内存分配不连续,他对插入的要求也十分的低。
所以在使用大对象的时候,这可是一个不错的选择。
“

C++ stl标准库中的 deque 是什么
C++ STL中的deque是一种双端队列容器,提供在头部和尾部快速插入和删除操作。
作为序列容器,deque内部通过连续空间段和指针连接实现动态增长和收缩。
支持随机访问,通过运算符[]提供索引访问功能,并能进行两端元素操作,包括push_front(), push_back(), pop_front(), pop_back()等。
deque是一种高效灵活的容器,结合了数组和链表的优点,适用于多种应用场景。
它在C++ STL中常用于广度优先搜索(BFS)等场景。
在BFS算法中,deque作为队列,存储待访问节点。
算法从队列前端取出节点,访问其邻居,并将其添加到队列尾部,直到队列为空,确保所有可达节点被访问。
在实现过程中,deque作为BFS的核心,确保了搜索过程的高效性。
二维矩阵graph表示图的连接关系,start作为起始节点,visited标记节点访问状态,queue作为待访问节点的容器。
BFS函数从队列前端取出节点,打印信息,并访问其邻居,未访问的邻居标记访问并添加到队列尾部,直至所有可达节点被访问。
案例一:滑动窗口的最大值。
利用deque记录当前窗口元素下标,通过元素值大小组织deque,找出所有窗口内的最大值。
案例二:实现双端队列。
通过C++的deque容器,允许在头部和尾部进行插入和删除操作,实现双端队列功能。
C++的高级特性丰富,如模板、异常处理和多线程等,为复杂系统的开发提供了强大支持。
深入学习C++可关注最新开发趋势和应用领域,如现代系统开发、高性能计算、游戏开发等。
C++后台开发面试:STL六大组件
容器类是容纳、包含一组元素或元素集合的对象,包含七种基本容器:向量(vector)、双端队列(deque)、列表(list)、集合(set)、多重集合(multiset)、映射(map)和多重映射(multimap)。
列表(list)是一种双向链表,它支持在任何位置插入、删除元素。
向量(vector)是一种动态数组,提供随机访问和插入操作。
双端队列(deque)在两端插入和删除元素,提供高效操作。
关联式容器使用红黑树作为底层数据结构,支持快速查找、插入和删除操作。
红黑树具有五大特性:节点颜色为红色或黑色、根节点为黑色、每个叶子节点(NIL节点)为黑色、每个红色节点的两个子节点均为黑色、从任一节点到其每个叶子节点的所有简单路径上包含相同数目的黑色节点。
迭代器(Iterator)允许我们遍历容器中的元素,只支持顺序容器和关联容器。
算法(Algorithm)处理容器内元素,如搜索、排序、修改等,与迭代器配合,实现通用性。
适配器(Adapter)将不同接口的容器转换成统一的迭代器接口。
函数对象(Function object)实现仿函数行为,用于算法的自定义逻辑。
分配器(Allocator)负责内存配置与管理。
STL默认使用两级分配器实现内存管理,当申请内存大小大于128字节时,使用malloc/free分配,小于128字节时,从预先分配的内存池中获取内存,减少内存碎片。
内存池策略优化内存分配效率,减少内存碎片生成,适用于小对象快速分配。
以上内容整理自相关博客和公开课,提供C++后台开发面试中关于STL六大组件的基础知识与应用。