C++教程

浏览4314
更新时间2025-08-05

C++ 栈

栈(stack)按照特定的顺序(称为后进先出,即 LIFO)存储多个元素。

LIFO 是 "Last In, First Out"(后进先出)的缩写。要理解 LIFO,可以想象一堆煎饼,煎饼是从顶部添加和移除的。因此,当你移除一块煎饼时,它总是你最后添加的那块。在计算机科学和编程中,这种组织元素的方式被称为 LIFO。

与向量不同,栈中的元素不能通过索引号访问。由于元素是从栈顶添加和移除的,因此你只能访问栈顶的元素。

要使用栈,必须包含 <stack> 头文件:

// 包含栈库
#include <stack>

创建栈

要创建一个栈,可以使用 stack 关键字,并在尖括号 <> 内指定要存储的值的类型,然后是栈的名称,格式为:

stack<类型> 栈名

实例

// 创建一个名为 cars 的字符串栈
stack<string> cars;

注意:栈的类型(本例中为 string)一旦声明后就不能更改。

注意:与向量不同,你不能在声明栈时直接添加元素:

实例

stack<string> cars = {"Volvo", "BMW", "Ford", "Tesla"};

添加元素

要向栈中添加元素,可以使用 .push() 函数:

实例

// 创建一个名为 cars 的字符串栈
stack<string> cars;

// 向栈中添加元素
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Tesla");

此时栈的结构如下(记住,最后添加的元素是栈顶元素):

Tesla (栈顶元素)
Ford
BMW
Volvo

访问栈元素

与数组和向量不同,你不能通过索引号来访问栈元素。

在栈中,你只能访问栈顶元素,这可以通过 .top() 函数实现:

实例

// 访问栈顶元素
cout << cars.top();  // 输出 "Tesla"
运行实例 »

点击 "运行实例" 按钮查看在线实例

修改栈顶元素

你也可以使用 .top() 函数来修改栈顶元素的值:

实例

// 修改栈顶元素的值
cars.top() = "Audi";

// 访问栈顶元素
cout << cars.top();  // 现在输出 "Audi" 而非 "Tesla"
运行实例 »

点击 "运行实例" 按钮查看在线实例

移除元素

你可以使用 .pop() 函数从栈中移除一个元素。

这将移除栈中最后添加的元素:

实例

// 创建一个名为 cars 的字符串栈
stack<string> cars;

// 向栈中添加元素
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Tesla");

// 移除最后添加的元素(Tesla)
cars.pop();

// 访问栈顶元素(现在是 Ford)
cout << cars.top();
运行实例 »

点击 "运行实例" 按钮查看在线实例

获取栈的大小

要了解栈中有多少个元素,可以使用 .size() 函数:

实例

cout << cars.size();
运行实例 »

点击 "运行实例" 按钮查看在线实例

检查栈是否为空

可以使用 .empty() 函数来判断栈是否为空。

.empty() 函数在栈为空时返回 1(true),在栈包含元素时返回 0(false):

实例

stack<string> cars;
cout << cars.empty(); // 输出 1(栈为空)
运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

stack<string> cars;

cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Tesla");

cout << cars.empty();  // 输出 0(栈不为空)
运行实例 »

点击 "运行实例" 按钮查看在线实例

栈与队列

栈通常与队列一起提及,队列是另一种类似的数据结构,将在下一页进行介绍。

相关视频

更多

免费

php8,我来也
初级php8,我来也

321849次学习

收藏

免费

Thinkphp6.0正式版视频教程
中级Thinkphp6.0正式版视频教程

382470次学习

收藏

免费

细说PHP第一季
中级细说PHP第一季

282865次学习

收藏

免费

简单聊聊PHP创业那点事
初级简单聊聊PHP创业那点事

13418次学习

收藏
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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