stack翻译为栈,是STL中实现的一个后进先出的容器。要使用 stack,应先添加头文件include,并在头文件下面加上“ using namespace std;"
1. stack的定义
其定义的写法和其他STL容器相同, typename可以任意基本数据类型或容器:
stack<typename> name;
2. stack容器内元素的访问
由于栈(stack)本身就是一种后进先出的数据结构,在STL的 stack中只能通过top()来访问栈顶元素。
程序代码:
#include<cstdio>
#include<stack>
using namespace std;
int main(){
stack<int> st;
for(int i=1;i<=5;i++){
st.push(i); //push(i)将i压入栈
}
printf("%d\n",st.top()); //top()取栈顶元素
return 0;
}
运行结果为:5
3、stack中常用函数
①push()
入栈
②top()
获得栈顶元素
③pop()
弹出栈顶元素
运行代码:
#include<cstdio>
#include<stack>
using namespace std;
int main(){
stack<int> st;
for(int i=1;i<=5;i++){
st.push(i); //push(i)将i压入栈 ,1 2 3 4 5 依次入栈
}
for(int i=1;i<=3;i++){
st.pop(); //pop()将栈顶元素出栈,即将5 4 3 依次出栈
}
printf("%d\n",st.top()); //top()取栈顶元素
return 0;
}
运行结果为:2
④empty()
可以检测stack内是否为空,返回true为空,返回false为非空
⑥size()
返回stack内元素的个数
4、stack的常见用途
stack常用来模拟一些递归,防止程序对栈内存的限制而导致程序出错
一般来说
程序的栈内存空间很小
对有些题目来说
如果用普通的函数来进行递归
一旦递归层数过深
则会导致程序运行崩溃
如果用栈来模拟递归算法的实现
可以避免这一方面的问题