C++ STL Stack、Queue、Deque 容器适配器接口详解
C++ STL 中三种常用容器适配器的核心概念与接口:Stack(栈)、Queue(队列)和 Deque(双端队列)。Stack 遵循后进先出原则,提供 push、pop、top 等接口;Queue 遵循先进先出原则,提供 push、pop、front、back 等接口;Deque 支持两端高效插入删除,兼具随机访问能力。文章详细说明了各容器的实例化方式、关键成员函数用法及性能特点,帮助开发者根据场景选择合适的数据结构。

C++ STL 中三种常用容器适配器的核心概念与接口:Stack(栈)、Queue(队列)和 Deque(双端队列)。Stack 遵循后进先出原则,提供 push、pop、top 等接口;Queue 遵循先进先出原则,提供 push、pop、front、back 等接口;Deque 支持两端高效插入删除,兼具随机访问能力。文章详细说明了各容器的实例化方式、关键成员函数用法及性能特点,帮助开发者根据场景选择合适的数据结构。

stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中。
栈(Stack):只允许在一端进行插入或者删除的线性表。栈只支持在一端进行插入和删除操作。
在 C++STL 容器中,为我们提供了 Stack 的接口函数,与 list、Vector、string 类似,直接实例化使用即可。
栈的元素支持内置类型(int、char、double......)也支持自定义类型,这里以 int 类型为例:
// 实例化 stack<int> V;
遵循:stack<类型> 变量名
如果是当前的栈为空返回非 0;不为空返回 0
V.empty()
计算当前栈的元素个数,并返回
V.size();
返回当前栈顶元素的引用
V.top();
将元素存进栈中
V.push(val);
弹出栈尾元素,注意没有返回值
V.pop();
队列满足先进先出(First-In-First-Out,FIFO),它可以在一端插入另一端删除,新元素被插入到队列的末尾(也就是队尾),元素只能在队列的前端(队首)被删除。队列由三个结构组成:
遵循:queue<类型> 变量名
queue<int> V;
队列为空返回 true;不为空返回 false
V.empty();
V.size();
队头就是尾端,出元素的那端,返回尾端元素的引用
V.front();
队尾就是头端,进元素的那端,返回头端元素的引用
V.back();
将元素插入到队列
V.push(val);
满足先进先出,将先进的元素出队列
V.pop();
dque 是一种动态数组。它可以在两端快速插入和删除元素,同时提供了接近常数时间的随机访问。与 vector 不同,deque不是将所有元素连续存储,而是将元素存储在一系列固定大小的数组中,并通过一个中央控制结构(通常是一个数组)来管理这些数组的指针。
// 实例化 deque<int> V;
为空返回 true;不为空返回 false
V.size();
与 queue 的 front 访问特点很像
V.front();
与 queue 的 back 访问特点很像
V.back();
V.push_back(val);
V.push_back(val); // 尾部插入元素
V.pop_back(); // 尾部删除元素
V.push_front(val); // 头部插入元素
V.pop_front(); // 头部删除元素
**注意:**也可以在中间插入/删除元素,不过很低效,一般不会使用。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online