首页 > 后端开发 > C++ > 正文

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

穿越時空
发布: 2025-12-20 14:06:08
原创
829人浏览过
std::stack是C++ STL基于底层容器(默认deque)实现的LIFO容器适配器,仅支持push、top、pop、empty、size等栈顶操作,不支持随机访问或迭代器遍历,使用时需注意空栈检查及无clear成员函数等限制。

c++如何使用栈(stack)?(stl容器教程)

在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++免费学习笔记(深入)”;

Python v2.4 中文手册 chm
Python v2.4 中文手册 chm

Python v2.4版chm格式的中文手册,内容丰富全面,不但是一本手册,你完全可以把她作为一本Python的入门教程,教你如何使用Python解释器、流程控制、数据结构、模板、输入和输出、错误和异常、类和标准库详解等方面的知识技巧。同时后附的手册可以方便你的查询。

Python v2.4 中文手册 chm 2
查看详情 Python v2.4 中文手册 chm
  • 不能用下标访问(如 s[0]),也不支持迭代器遍历
  • top() 返回的是引用,修改它会直接影响栈中元素(例如 s.top() = 42; 合法)
  • 调用 top()pop() 前务必检查 empty(),否则行为未定义
  • 没有 clear() 成员函数;清空可用循环 while(!s.empty()) s.pop();,或用作用域控制生命周期

一个小而完整的示例

判断括号是否匹配(经典栈应用):

std::stack<char> stk;
for (char c : expr) {
    if (c == '(' || c == '[' || c == '{') stk.push(c);
    else if (!stk.empty() && ((c == ')' && stk.top() == '(') ||
                              (c == ']' && stk.top() == '[') ||
                              (c == '}' && stk.top() == '{'))) {
        stk.pop();
    } else return false;
}
return stk.empty();
登录后复制

这里只依赖 pushtoppopempty,正是 stack 最自然的使用方式。

基本上就这些。它不复杂但容易忽略边界检查和底层限制——用对场景,它就是最干净的 LIFO 工具

以上就是C++如何使用(stack)?(STL容器教程)的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号