容器适配器概述
在学习 Stack 和 Queue 之前,我们先来了解一下容器适配器。适配器是一种设计模式,将类的接口转换成客户希望的另一个接口。
底层容器的选择
Stack 和 Queue 默认使用 deque 作为底层容器,因为 deque 支持头尾两端高效插入删除,这与 Stack 和 Queue 的需求一致。Priority Queue 默认使用 vector,适合随机访问和堆操作。
标准库中的 Stack
基本概念
Stack 遵循后进先出(LIFO)原则。STL 对栈数据结构进行了封装,使用时需要包含头文件 #include <stack>。
常用接口
| 函数说明 | 接口说明 |
|---|---|
| stack() | 构造空的栈 |
| empty() | 检测 Stack 是否为空 |
| size() | 返回 Stack 中的元素个数 |
| top() | 返回栈顶元素的引用 |
| push() | 将元素 val 压入 Stack 中 |
| pop() | 将 Stack 中尾部的元素弹出 |
使用示例
int main() {
std::stack<int> st;
st.push(1); st.push(2); st.push(3); st.push(4); st.push(5);
std::cout << "容量大小为:" << st.size() << std::endl;
std::cout << "出栈顺序为:";
while (!st.empty()) {
int top = st.top();
st.pop();
std::cout << top << " ";
}
std::cout << std::endl;
return 0;
}
模拟实现
#
Stack {
< , =std::deque<T>>
stack {
:
( T& x) { _c.(x); }
{ _c.(); }
{ _c.(); }
{ _c.(); }
{ _c.(); }
{ _c.(); }
:
Con _c;
};
}


