在C++标准模板库(STL)中,deque(全称 double-ended queue,即“双端队列”)是一种功能强大且高效的容器。它支持在两端快速插入和删除元素,同时还能像数组一样通过下标随机访问元素。本教程将带你从零开始,深入浅出地学习 C++ deque库详解,即使你是编程小白,也能轻松掌握!

deque 是 C++ STL 中的一个序列容器,全称为 double-ended queue(双端队列)。与 vector 不同,deque 允许在 前端(头部)和 后端(尾部)都以接近常数时间复杂度进行插入和删除操作。同时,它也支持通过索引(下标)进行随机访问。
关键特性:
deq[0]、deq[3])要使用 deque,首先需要包含头文件 <deque>:
#include <iostream>#include <deque>using namespace std;
// 空 dequedeque<int> dq;// 初始化包含5个元素,值为10deque<int> dq2(5, 10);// 用数组初始化int arr[] = {1, 2, 3};deque<int> dq3(arr, arr + 3);// 拷贝构造deque<int> dq4(dq3);下面是一些最常用的 deque容器使用教程 中的核心操作:
push_back(x):在尾部插入元素 xpush_front(x):在头部插入元素 xpop_back():删除尾部元素pop_front():删除头部元素front():返回首元素引用back():返回尾元素引用size():返回元素个数empty():判断是否为空at(i) 或 [i]:访问第 i 个元素#include <iostream>#include <deque>using namespace std;int main() { deque<int> dq; // 在尾部添加 dq.push_back(10); dq.push_back(20); // 在头部添加 dq.push_front(5); dq.push_front(1); // 此时 dq = [1, 5, 10, 20] cout << "Front: " << dq.front() << endl; // 输出 1 cout << "Back: " << dq.back() << endl; // 输出 20 // 遍历 deque for (int i = 0; i < dq.size(); i++) { cout << dq[i] << " "; // 输出 1 5 10 20 } cout << endl; // 删除首尾 dq.pop_front(); // 删除 1 dq.pop_back(); // 删除 20 cout << "After pop: "; for (auto it = dq.begin(); it != dq.end(); ++it) { cout << *it << " "; // 输出 5 10 } cout << endl; return 0;}很多初学者会混淆 deque 和 vector。以下是主要区别:
| 特性 | vector | deque |
|---|---|---|
| 内存布局 | 连续 | 非连续(分段连续) |
| 头部插入/删除 | O(n) | O(1) |
| 尾部插入/删除 | 摊还 O(1) | O(1) |
| 随机访问 | 支持 | 支持 |
双端队列C++ 特别适合以下场景:
通过本篇 C++ STL deque 教程,你应该已经掌握了 deque 的基本用法、核心操作以及与 vector 的区别。记住:deque 是一个功能全面、性能优秀的容器,尤其适合需要在两端频繁操作的场景。
建议多动手写代码练习,加深理解。祝你在 C++ 编程之路上越走越远!
本文由主机测评网于2025-12-10发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025125647.html