📅  最后修改于: 2023-12-03 15:14:04.382000             🧑  作者: Mango
C++标准模板库(STL)中的双端队列是一种支持在队列两侧插入和删除元素的容器。双端队列类似于向量(vector),在访问元素方面能达到向量的高效性能,同时允许快速在其两端插入和删除元素。
在STL中,双端队列的容器类为std::deque,deque是double-ended queue的缩写。deque是由多个指向固定大小的数组的指针构成的,它支持从两端插入和删除元素,并且可以高效地随机访问元素。deque的存储空间是动态分配的,因此它的大小可以根据需要自行扩展。
下面是一个简单的C++程序,演示如何使用std::deque创建双端队列并进行插入和删除操作:
#include <iostream>
#include <deque>
int main() {
std::deque<int> myDeque;
// 从队列前后插入元素
myDeque.push_front(1);
myDeque.push_back(2);
myDeque.push_front(3);
myDeque.push_back(4);
// 打印队列中的元素
for (auto it = myDeque.begin(); it != myDeque.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
// 删除队列前后的元素
myDeque.pop_front();
myDeque.pop_back();
// 打印队列中的元素
for (auto it = myDeque.begin(); it != myDeque.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
以上代码中,我们首先创建一个std::deque容器对象myDeque,然后使用push_front和push_back方法向容器中插入4个元素。之后,我们使用循环打印队列中的元素,并使用pop_front和pop_back方法分别删除了队列前后的元素。
在STL中,std::deque容器类的主要操作包括以下方法:
STL双端队列的优势:
STL双端队列的局限性:
STL双端队列是一种高效的双端存储容器,可以高效地在队列的两端进行插入和删除操作,并支持随机访问元素。总体来说,STL双端队列是一个非常有用的数据结构,在实际编程中会经常用到。