C++ 栈
C++ stack 栈
栈按照称为后进先出的特定顺序存储多个元素。
LIFO 代表 后进先出。为了形象地理解 LIFO,可以想象一堆煎饼,煎饼从最上面添加和取出。因此,取出的总是最后添加的那张煎饼。这种组织元素的方式在计算机科学和编程中被称为 LIFO。
与向量不同,栈中的元素不能通过索引号访问。由于元素是从栈顶添加和移除的,因此您只能访问栈顶的元素。
要使用堆栈,您必须包含 <stack> 头文件:
// 包含堆栈库
#include <stack>
创建栈
要创建栈,请使用 stack 关键字,并在尖括号 <> 内指定它应该存储的值的 type,然后指定栈的名称,例如:stack<type> stackName。
// 创建一个名为"cars"的字符串栈。
stack<string> cars;
注意:栈的类型(在本例中为字符串)声明后无法更改。
注意:声明栈时无法像使用vector那样向栈中添加元素。
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 element)
Ford
BMW
Volvo
访问栈元素
在栈中,您只能访问栈顶元素,这可以通过.top()函数实现。
更改顶部元素
您还可以使用 .top 函数来更改顶部元素的值:
示例
// 更改顶部元素的值
cars.top() = "Tesla";
// 访问顶部元素
cout << cars.top(); // Now outputs "Tesla" instead of "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(真)表示栈为空,否则返回 0(假):
示例
stack<string> cars;
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Mazda");
cout
<< cars.empty(); // Outputs 0 (not empty)
亲自试一试 »
Stacks and Queues
栈经常与队列一起提及,队列是一种类似的数据结构,将在下一页中进行描述。

