适配器介绍
容器适配器是 C++ 标准库提供的特殊容器类型,它们基于现有顺序容器实现,但提供受限接口和特定行为。它们不是完整的容器,而是对底层容器的包装。
三大容器适配器
- stack:默认底层容器为 deque,遵循后进先出。
- queue:默认底层容器为 deque,遵循先进先出。
- priority_queue:默认底层容器为 vector,优先级最高者先出。
特性讲解
- 在元素访问上受限:比如 stack 只能访问栈顶元素,queue 遵循先进先出,只能访问队头元素。
- 不支持迭代器的使用。
- 适用于特定的数据结构。
stack 的底层实现
stack 的底层容器为 deque,虽然 deque 可以两端进出,因此需要封装。
类模板定义
template<class T, class container = std::deque<T>>
class stack {
public:
// 实现
private:
container c;
};
这里的 container 作为类模板参数应该是 deque 数据结构类型,T 是数据类型。这个 stack 类里面其实是用的 deque 作为底层,只是通过进行了封装。
入栈
// 入栈
void push(const T& data) {
// 注意 deque 是数组形式的存储,栈顶就是数组的尾端
c.push_back(data);
}
出栈
// 出栈
void pop() {
c.pop_back();
}
获取栈顶元素
// 获取栈顶元素
T& top() {
return c.back();
}
判断栈空
{
c.();
}


