C++如何使用栈(stack)?(STL容器教程)

admin 百科 12
std::stack是C++ STL基于底层容器(默认deque)实现的LIFO容器适配器,仅支持push、top、pop、empty、size等栈顶操作,不支持随机访问或迭代器遍历,使用时需注意空栈检查及无clear成员函数等限制。

C++如何使用栈(stack)?(STL容器教程)-第1张图片-佛山资讯网

在C++中,std::stack 是 STL 提供的容器适配器,它基于底层容器(默认是 std::deque)实现后进先出(LIFO)行为。它不支持随机访问或遍历,只提供栈顶操作,用起来简单但需注意其“封闭接口”特性。

基本用法:声明、入栈与出栈

要使用 std::stack,需包含头文件 <stack></stack>。它是一个模板类,需指定元素类型:

  • 声明方式:std::stack<int> s;</int>(默认用 deque 作底层)
  • 入栈:s.push(10); —— 将元素压入栈顶
  • 查看栈顶:s.top(); —— 返回引用,不移除元素(栈非空时才安全)
  • 弹出栈顶:s.pop(); —— 移除栈顶元素,不返回值
  • 判空:s.empty(); 返回 bool
  • 大小:s.size(); 返回元素个数

指定底层容器(可选但实用)

std::stack 是适配器,允许你显式选择底层容器(必须支持 push_backpop_backback):

  • vectorstd::stack<int std::vector>> s;</int>
  • liststd::stack<int std::list>> s;</int>
  • 多数场景用默认即可;若需连续内存或已用 vector 管理大量数据,可考虑切换以减少内存碎片

常见误区与注意事项

std::stack 的设计目标是抽象栈逻辑,因此有意屏蔽了部分能力:

立即学习“C++免费学习笔记(深入)”;

标签: 工具 c++ 作用域

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~