📅  最后修改于: 2023-12-03 14:59:47.132000             🧑  作者: Mango
双端队列(deque)是C++标准模板库(STL)中的一种数据结构,它是一种可以在两端进行插入和删除操作的队列。
双端队列是一种序列容器,具有动态大小的数组,可以在两端进行高效的插入和删除操作。双端队列支持在队列的任一端插入和删除元素,并且可以在常数时间内随机访问任意位置的元素。
在C++中,双端队列通过#include <deque>
引入,并位于std
命名空间中。它是C++标准模板库(STL)提供的一种容器。
#include <deque>
std::deque<int> myDeque; // 创建一个空的双端队列
可以使用push_front
在队列的前端插入元素,使用push_back
在队列的后端插入元素。
myDeque.push_front(4); // 在队列的前端插入元素4
myDeque.push_back(7); // 在队列的后端插入元素7
可以使用pop_front
移除队列的第一个元素,使用pop_back
移除队列的最后一个元素。
myDeque.pop_front(); // 移除队列的第一个元素
myDeque.pop_back(); // 移除队列的最后一个元素
可以使用front
获取队列的第一个元素,使用back
获取队列的最后一个元素。
int firstElement = myDeque.front(); // 获取队列的第一个元素
int lastElement = myDeque.back(); // 获取队列的最后一个元素
可以使用范围for
循环或迭代器来遍历双端队列中的元素。
for (int num : myDeque) {
// 对队列中的每个元素执行操作
}
// 或者使用迭代器
for (auto it = myDeque.begin(); it != myDeque.end(); ++it) {
int num = *it;
// 对队列中的每个元素执行操作
}
size
:返回双端队列中元素的数量。empty
:检查双端队列是否为空。clear
:清空双端队列中的所有元素。双端队列在以下情况下非常有用:
由于双端队列的实现方式和向量类似,但在两端插入和删除操作上更高效,所以在需要快速在队列两端进行插入和删除操作的情况下,双端队列是一个很好的选择。
双端队列是C++ STL中的一种非常有用的容器,通过提供在队列两端进行高效插入和删除操作的能力,使得编程变得更加方便和高效。在需要同时满足随机访问和高效插入/删除操作的场景下,双端队列是一个很好的选择。
参考链接: