std::deque是C++ STL中支持两端高效插入删除的序列容器,需包含头文件;声明方式多样,如空初始化、指定大小或列表初始化;提供push_back、push_front、pop_back、pop_front等成员函数实现首尾增删,支持front、back、下标等访问方式,并具备size、empty、resize等常用操作;底层非连续内存但支持随机访问,适用于频繁两端操作场景,灵活性高于vector,但随机访问性能略低。

在C++中,std::deque(双端队列)是标准模板库(STL)提供的一个序列容器,支持在头部和尾部高效地插入和删除元素。它结合了vector的部分特性,同时允许两端操作,使用起来非常灵活。
包含头文件
使用 std::deque 前需要包含对应的头文件:
#include声明与初始化
常见的声明方式如下:
- std::deque
dq; // 空的int类型双端队列 - std::deque
dq(5); // 包含5个0.0的双端队列 - std::deque
dq(5, 10); // 5个值为10的元素 - std::deque
dq2(dq); // 拷贝构造 - std::deque
dq = {1, 2, 3, 4}; // 列表初始化(C++11起)
常用成员函数操作
以下是 std::deque 的常用操作方法:
立即学习“C++免费学习笔记(深入)”;
插入元素
- dq.push_back(x); // 在尾部添加元素x
- dq.push_front(x); // 在头部添加元素x
- dq.insert(pos, x); // 在指定位置插入元素
删除元素
- dq.pop_back(); // 删除尾部元素
- dq.pop_front(); // 删除头部元素
- dq.erase(pos); // 删除指定位置的元素
- dq.clear(); // 清空所有元素
访问元素
- dq.front(); // 返回第一个元素的引用
- dq.back(); // 返回最后一个元素的引用
- dq[i]; // 随机访问第i个元素(不检查越界)
- dq.at(i); // 访问第i个元素,会做越界检查
其他常用函数
- dq.empty(); // 判断是否为空
- dq.size(); // 返回元素个数
- dq.resize(n); // 调整大小为n
- dq.swap(another_dq); // 交换两个deque的内容
示例代码
下面是一个简单使用示例:
#include iostream>#include
int main() {
std::deque
dq.push_back(10);
dq.push_front(5);
std::cout std::cout
dq.pop_back();
std::cout
return 0;
}
基本上就这些。std::deque 适合需要频繁在两端增删元素的场景,相比 vector 更灵活,但随机访问性能略低于 vector。日常开发中根据需求选择即可。不复杂但容易忽略的是:它不要求内存连续,但支持类似数组的访问方式。










