qfedu-cpp-level/day9/stl_stack_demo/d1.cpp

53 lines
1.3 KiB
C++

// stack 没有迭代器:不支持遍历
// 原因: 栈是一种特殊的容器,只能在栈顶进行插入和删除操作
// stack 常用接口
// 1. push(elem); // 入栈
// 2. pop(); // 出栈
// 3. top(); // 返回栈顶元素
// 4. empty(); // 判断栈是否为空
// 5. size(); // 返回栈中元素的个数
// 6. swap(stk1, stk2); // 交换两个栈
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack<int> stk;
for (int i = 0; i < 1000; i++)
{
stk.push(i);
}
cout << "当前栈中元素个数:" << stk.size() << endl;
cout << "栈顶的元素: " << stk.top() << endl;
// 只弹出 600 这个元素
// 需要一个临时变量来保存弹出的元素
stack<int> tmp_stk;
while (stk.top() != 600)
{
tmp_stk.push(stk.top());
stk.pop();
}
cout << " ----------\n弹出 600 前的栈顶元素: "
<< stk.top() << endl;
stk.pop();
cout << "弹出 600 后的栈顶元素: "
<< stk.top()
<< endl
<< " ----------\n";
while (!tmp_stk.empty())
{
stk.push(tmp_stk.top());
tmp_stk.pop();
}
cout << "当前栈中元素个数:" << stk.size() << endl;
cout << "栈顶的元素: " << stk.top() << endl;
return 0;
}