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 等的准备工作,请参阅完整的面试准备课程。