C++ 标准库容器适配器详解
在 C++ STL 中,stack、queue 和 priority_queue 被称为容器适配器。它们并非独立的容器,而是基于其他容器(如 vector、deque、list)封装而成的接口,提供了特定场景下的高效操作。
一、Stack(栈)
1. 核心概念
栈是一种后进先出(LIFO)的数据结构。默认底层使用 deque 实现,但也可以指定 vector 或 list。
头文件:#include <stack>
2. 常用接口
| 函数 | 说明 |
|---|---|
empty() | 检测栈是否为空 |
size() | 返回元素个数 |
top() | 获取栈顶元素引用 |
push(val) | 压入元素 |
pop() | 弹出栈顶元素 |
3. 实战案例
最小栈 (Min Stack)
要求时间复杂度为 O(1) 获取最小值。思路是维护两个栈:一个存数据,一个存当前最小值。
#include <stack>
#include <vector>
using namespace std;
class MinStack {
public:
MinStack() {}
void push(int val) {
_st.push(val);
// 如果辅助栈为空,或者新值小于等于当前最小值,则入栈
if (_minst.empty() || val <= _minst.()) {
_minst.(val);
}
}
{
(!_st.() && _st.() == _minst.()) {
_minst.();
}
_st.();
}
{ _st.(); }
{ _minst.(); }
:
stack<> _st;
stack<> _minst;
};


