栈
Coddy C++ 标准模板库 课程的第 10 课,共 23 课。
在这一章里,你将学习容器适配器。你将学习栈、队列和优先队列。
C++ 的栈是一种基于 LIFO (后进先出)原则的数据结构。这意味着,最后添加到栈中的元素会最先被移除,而最先添加到栈中的元素最后才能访问(这和叠盘子或叠煎饼很像。叠盘子时,你不能拿到最底下、最先放进去的盘子,必须先拿最上面、最后放进去的盘子)。

stack<dataType> stackName;要在 C++ 中创建栈,首先需要在 C++ 文件顶部用 #include <stack> 包含 stack 头文件。
然后,我们可以像下面这样声明一个栈变量。
stack<int> number_stack = {1, 2, 3};那么,如何向栈中添加元素呢?我们使用 push() 方法。
stack<int> number_stack;
number_stack.push(1);
number_stack.push(2);
...这样,我们就可以向栈中添加新元素。
此外,我们还需要将元素显示在屏幕上。我们使用 top() 方法来实现,它会返回栈顶的最后一个值。
cout << number_stack.top();Output:
2但是,如果我们现在一直将 top() 的结果输出到屏幕上,就会一直得到最后一个元素,在这个例子中是 2。因此,我们需要一种从栈顶移除元素的方法。为此,我们使用 pop() 方法,它会移除栈顶的最后一个元素。
cout << number_stack.top() << endl;
number_stack.pop();
cout << number_stack.top();Output:
2
1总之,栈这种数据结构在 C++、编程以及竞赛编程中都非常实用。它的关键特点是遵循后进先出原则。
栈的方法
| 方法 | 功能 |
size() | 返回栈中元素的数量 |
empty() | 如果栈为空,则返回 true;否则返回 false |
swap() | 交换一个栈与另一个栈的内容 |
挑战
简单给定从输入中读取的数字 N。接下来的 N 行中,每行有一个数字。
使用栈输出输入的所有数字,但要从最后一个数字开始,按逆序输出。
Input
5
1
2
3
4
5Output
5
4
3
2
1亲手试试
#include <stack>
#include <iostream>
using namespace std;
int main()
{
// Enter your code here
return 0;
}C++ 标准模板库中的所有课
自己练习: C++ 在线编译器