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

📅  最后修改于: 2021-09-11 03:53:10             🧑  作者: Mango

C++ 标准模板库 (STL) 中的 Deque

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

deque 的功能与vector 相同,只是增加了前后的push 和pop 操作。

C++ STL 中的向量

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

Deque 和 Vector 的区别:

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 contiguously It contains lists of memory chunks where elements are stored contiguously
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 等的准备工作,请参阅完整的面试准备课程