STL容器-stack
一、什么是栈
1、什么是容器适配器
STL 中的容器适配器有 stack、queue、priority_queue 三种。它们都是在顺序容器的基础上实现的,屏蔽了顺序容器的一部分功能,突出或增加了另外一些功能。
容器适配器都有以下三个成员函数:
- push ():添加一个元素。
- top ():返回顶部(对 stack 而言)或队头(对 queue、priority_queue 而言)的元素的引用。
- pop ():删除一个元素。
容器适配器是没有迭代器的,因此 STL 中的各种排序、查找、变序等算法都不适用于容器适配器。
2、什么是栈
栈是一种后进先出(First in last out,简称 FILO 或者 LIFO)的元素序列,访问和删除都只能对栈顶的元素(即最后一个被加入栈的元素)进行,并且元素也只能被添加到栈顶。栈内的元素不能访问。如果一定要访问栈内的元素,只能将其上方的元素全部从栈中删除,使之变成栈顶元素才可以。
stack 容器有广泛的应用。例如,编辑器中的 undo (撤销) 机制就是用堆栈来记录连续的变化。撤销操作可以取消最后一个操作,这也是发生在堆栈顶部的操作。
入栈顺序:10 20 30 40 50
出栈顺序:50 40 30 20 10
注意:栈的进出元素是可以同时进行
二、栈的常见函数
函数名
|
函数说明
|
push(元素)
|
入栈
|
pop()
|
出栈
|
top()
|
返回栈顶元素
|
size()
|
返回元素个数
|
empty()
|
判断栈是否为空
|
三、栈的应用
例子栈的存入与遍历
</span>#include <bits/stdc++.h> using namespace std; int main() { // 定义一个整型栈s stack<int> s; // 以下是之前示例入栈、获取栈顶元素、出栈操作,这里被注释掉了 // s.push(10);//入栈 // s.push(20); // s.push(30); // cout<<s.top()<<endl; // s.pop(); //出栈 // cout<<s.top()<<endl; /* 向栈中存入元素,直到遇到-1结束 */ int x; while (1 == 1) { // 从标准输入读取一个整数 cin >> x; // 如果读取到的数为 -1 则退出循环 if (x == -1) break; // 将读取到的数压入栈中 s.push(x); } // 将元素逐个访问(将元素逐个弹出) while (s.empty() == false) { // 获取栈顶元素并输出 cout << s.top() << endl; // 弹出栈顶元素 s.pop(); } return 0; }
- 状态
- 已结束
- 规则
- ACM/ICPC
- 题目
- 5
- 开始于
- 2025-3-21 11:00
- 结束于
- 2025-5-25 15:00
- 持续时间
- 1564 小时
- 主持人
- 参赛人数
- 44