0x00、stack简介
stack,即"栈",是一个"先进后出"的容器。
可以理解:栈是一个箱子,数据就是物品。以此放入编号为1,2,3,4的物品,拿出的时候顺序只能是4,3,2,1,所以称之为"先进后出"。放张图可能更好理解些:
C++标准模板库提供了stack的头文件,使用起来也十分方便:
0x01、使用之前
要使用stack,应先添加对应的头文件:stack
#include <stack>
接着定义命名空间
using namespace std;
可以这样定义stack:
stack<ElementType> st;
0x02、操作
将元素压入栈,可以使用push函数:
st.push(VARIABLE);
stack是一个后进先出的数据结构,所以只能通过top()函数访问栈顶元素(元素仍然保留在堆栈内),使用pop()函数弹出栈顶元素(元素将从堆栈中删除),称之为"弹栈"
ElementType VariableName = st.top();
st.pop();
可以使用empty()函数检查栈是否空(返回True或False),可以使用size()函数获取堆栈元素个数。
bool isempty = st.empty();
int sum = st.size();
0x03、举例
#include <iostream>
#include <stack>
using namespace std;
int main(){
stack<int> st;
for(int i = 0; i < 5; i ++)
st.push(i);
while(!st.empty()){
cout << "栈顶元素:" << st.top();
cout << " 栈剩余元素个数:" << st.size() << endl;
st.pop();
}
return 0;
}
程序输出: