std::deque是C++ STL中支持双端高效插入删除的序列容器,通过包含头文件使用,可定义如std::deque dq;常用操作包括push_back、push_front、pop_back、pop_front、front、back、size、empty等,支持随机访问但不保证内存连续,适用于双端频繁操作场景。

std::deque(双端队列)是 C++ 标准模板库(STL)中的一个序列容器,支持在头部和尾部高效地插入和删除元素。与 std::vector 相比,std::deque 在两端操作都很快,而 vector 只在尾部高效。下面介绍 deque 的基本用法和常见操作。
包含头文件和定义 deque
使用 std::deque 需要包含头文件
#include iostream>
定义一个 deque 的方式如下:
std::dequestd::deque<:string> names; // 存储字符串的 deque
常用成员函数和操作
deque 提供了丰富的接口来操作数据,以下是常用的几种方法:
立即学习“C++免费学习笔记(深入)”;
1. 插入元素-
push_back(value):在尾部添加元素 -
push_front(value):在头部添加元素 -
insert(iterator, value):在指定位置插入元素
示例:
dq.push_back(10); // [10]dq.push_front(5); // [5, 10]
dq.push_back(20); // [5, 10, 20] 2. 删除元素
-
pop_back():删除最后一个元素 -
pop_front():删除第一个元素 -
erase(iterator):删除指定位置的元素
示例:
dq.pop_back(); // 移除 20,剩下 [5, 10]dq.pop_front(); // 移除 5,剩下 [10] 3. 访问元素
-
front():返回第一个元素的引用 -
back():返回最后一个元素的引用 -
operator[]或at(index):通过索引访问元素
示例:
std::cout std::cout std::cout 4. 其他常用函数-
size():返回元素个数 -
empty():判断是否为空 -
clear():清空所有元素 -
begin()和end():返回迭代器,用于遍历
遍历示例:
for (const auto& x : dq) {std::cout }
deque 的特点和适用场景
std::deque 的内存结构不是连续的,而是由多个固定大小的块组成,因此它可以在前后高效插入/删除。主要特点包括:
- 支持随机访问(可用下标或 at)
- 在头部和尾部插入删除的时间复杂度为 O(1)
- 不保证整体内存连续(与 vector 不同)
- 中间插入/删除效率较低(需要移动元素)
适合用于需要频繁在两端操作的场景,比如实现双端队列、滑动窗口、任务调度等。
基本上就这些。deque 使用简单,功能强大,是 vector 的有力补充。











