C++ 堆栈
C++ 堆栈
堆栈存储多个元素,顺序是特定的,称为LIFO。
LIFO 是 后进先出 的缩写。要形象地理解 LIFO,可以想象一叠煎饼,煎饼是同时从顶部添加和移除的。所以当移除一个煎饼时,它总是你最后添加的那个。这种组织元素的方式在计算机科学和编程中称为 LIFO。
与 向量 不同,堆栈中的元素不能通过索引号访问。由于元素是从顶部添加和移除的,您只能访问堆栈顶部的元素。
要使用堆栈,您必须包含 <stack>
头文件
// 包含 stack 库
#include <stack>
创建堆栈
要创建堆栈,请使用 stack
关键字,并指定它应存储的类型,放在尖括号 <>
中,然后是堆栈的名称,例如: stack<type> stackName
。
// 创建一个名为 cars 的字符串堆栈
stack<string> cars;
注意: 堆栈的类型(我们示例中的 string)在声明后不能更改。
注意:您不能在声明时添加元素,就像您可以对 向量 执行此操作一样
stack<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
添加元素
要在堆栈中添加元素,请在声明堆栈后使用 .push()
函数
示例
// 创建一个名为 cars 的字符串堆栈
stack<string> cars;
// 向堆栈添加元素
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Mazda");
堆栈将如下所示(记住最后添加的元素是顶部元素)
Mazda (顶部元素)
福特
宝马
沃尔沃
访问堆栈元素
您不能通过引用索引号来访问堆栈元素,就像您会使用 数组 和 向量 一样。
在堆栈中,您只能访问顶部元素,这是使用 .top()
函数完成的
更改顶部元素
您还可以使用 .top
函数来更改顶部元素的值
示例
// 更改顶部元素的值
cars.top() = "Tesla";
// 访问顶部元素
cout << cars.top(); // 现在输出 "Tesla" 而不是 "Mazda"
自己动手试一试 »
移除元素
您可以使用 .pop()
函数从堆栈中删除元素。
这将删除最后添加到堆栈的元素
示例
// 创建一个名为 cars 的字符串堆栈
stack<string> cars;
// 向堆栈添加元素
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Mazda");
// 删除最后添加的元素 (Mazda)
cars.pop();
// 访问顶部元素 (现在是 Ford)
cout << cars.top();
自己动手试一试 »
获取堆栈的大小
要查找堆栈中有多少个元素,请使用 .size()
函数
检查堆栈是否为空
使用 .empty()
函数来判断堆栈是否为空。
如果堆栈为空,.empty()
函数返回 1
(true),否则返回 0
(false)
示例
stack<string> cars;
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Mazda");
cout << cars.empty(); // 输出 0 (非空)
自己动手试一试 »
堆栈与队列
堆栈通常与 队列 一起提及,队列是 下一页 中描述的类似数据结构。