C++ 标准库容器适配器:Stack、Queue 与 Priority Queue 详解
一. stack 的介绍及使用
1.1 stack 的介绍
stack(栈)是一种后进先出(LIFO)的数据结构。在 STL 中,它默认使用 deque 作为底层容器,但也可以指定其他容器(如 vector 或 list)。
头文件:#include <stack>。

1.2 stack 的使用
| 函数说明 | 接口说明 |
|---|---|
| stack() | 构造空的栈 |
| empty() | 检测 stack 是否为空 |
| size() | 返回 stack 中元素的个数 |
| top() | 返回栈顶元素的引用 |
| push() | 将元素 val 压入 stack 中 |
| pop() | 将 stack 中尾部的元素弹出 |
最小栈实现
设计一个支持 push、pop、top 操作,并能在常数时间内检索到最小元素的栈。
思路:
这道题要求时间复杂度是 O(1)。我们可以定义两个栈,一个主栈 st,一个辅助栈 minst。当 st 中插入值时,如果 minst 为空或者新值小于等于 minst 的栈顶元素,则也压入 minst。这样 minst 的栈顶始终是当前栈中的最小值。删除时,如果弹出的值等于 minst 的栈顶,则同步弹出。
代码实现:
class MinStack {
public:
MinStack() {}
void push(int val) {
_st.push(val);
if (_minst.() || val <= _minst.()) {
_minst.(val);
}
}
{
(!_st.() && _st.() == _minst.()) {
_minst.();
}
_st.();
}
{
_st.();
}
{
_minst.();
}
:
stack<> _st;
stack<> _minst;
};



