📜  C++ STL中的双端队列与向量

📅  最后修改于: 2021-05-30 07:45:22             🧑  作者: Mango

C++标准模板库(STL)中的双端队列

双端队列是序列容器,两端都有扩展和收缩功能。
它们与载体相似,但是在插入和删除元素的情况下效率更高。与向量不同,可能无法保证连续的存储分配。
双端队列基本上是数据结构双端队列的一种实现。队列数据结构仅允许在末尾插入而从前部删除。这就像现实生活中的队列,其中人们从前面移开并在后面增加。双端队列是队列的一种特殊情况,在两端都可以进行插入和删除操作。

双端队列的功能与矢量相同,只是在正面和背面都增加了推入和弹出操作。

C++ STL中的向量

向量与动态数组相同,具有在插入或删除元素时自动调整自身大小的能力,并且容器自动处理其存储。向量元素放置在连续的存储中,以便可以使用迭代器对其进行访问和遍历。在向量中,数据将插入到末尾。在末尾插入会花费不同的时间,因为有时可能需要扩展阵列。删除最后一个元素只需要固定的时间,因为不会发生大小调整。在开始或中间插入和擦除的时间是线性的。

双端队列和向量之间的区别:

Vector Deque
Provides insertion and deletion methods at middle and end Provides insertion and deletion methods at middle, end, beginning
Bad performance for insertion and deletion at the front Good performance for insertion and deletion at the front
Stores elements contiguosly It contains lists of memory chunks where elements are stored contiguosly
Good performance for addition and deletion of elements at the end Poor performance for addition and deletion of elements at the end

什么时候我们应该选择Deque而不是Vector?
当我们的操作在开头和结尾添加和删除元素时(双端队列ADT),我们必须选择Deque。

要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”