例子
#include<cstdio>
#include<stack>
using namespace std;
int main()
{
stack<int> my_stack;
printf("my_stack.empty(): %d\n", my_stack.empty());
// printf("my_stack.top(): %d", my_stack.top()); top前要先判断,不然程序抛锚
my_stack.push(1);
my_stack.push(2);
my_stack.push(3);
printf("完成 push 。push 的值依次为 1 2 3 \n");
while (!my_stack.empty()) {
printf("my_stack.top(): %d\n", my_stack.top());
printf("my_stack.size(): %d\n", my_stack.size());
my_stack.pop(); // 无 返回值 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
printf("进行 一次 my_stack.pop() \n");
}
printf("my_stack.size(): %d\n", my_stack.size());
my_stack.pop(); // 栈为空再 继续 pop 也没事。 但是 top 之前一定要判空。
printf("my_stack.pop() * 3 程序照常运行 \n");
return 0;
}
/*
Output
my_stack.empty(): 1
完成 push 。push 的值依次为 1 2 3
my_stack.top(): 3
my_stack.size(): 3
进行 一次 my_stack.pop()
my_stack.top(): 2
my_stack.size(): 2
进行 一次 my_stack.pop()
my_stack.top(): 1
my_stack.size(): 1
进行 一次 my_stack.pop()
my_stack.size(): 0
my_stack.pop() * 3 程序照常运行
*/
参考
[1] C++ STL stack 用法 - 长岛冰茶、 - 博客园