顺序容器适配器: 栈
2023年12月23日 2023年12月23日
后进先出
默认使用deque作为底层容器
头文件
1#include <stack>
栈支持的底层容器
顺序容器 | |
---|---|
array | X |
vector/string | O |
deque | O |
list | O |
forward_list | X |
栈操作与对底层容器的要求
底层实现 | ||
---|---|---|
pop | 出栈; 要求栈不为空 | pop_back |
push | 入栈 | push_back |
emplace | 入栈 | emplace_back |
top | 获取栈顶元素 | back |
1s.pop(); // 删除栈顶元素,不返回元素值 2 3s.push(item); // 构造item的拷贝,压入栈 4 5s.emplace(args); // 使用args构造元素,压入栈 6 7s.top(); // 返回栈顶元素,不弹出
初始化栈, 并设置底层容器
1stack<string, vector<string>> str_stk; 2// 底层容器类型由deque改为vector 3 4stack<string, vector<string>> str_stk2(svec); 5// 此时可以用vector<string>来初始化
示例
1stack<int> intStack; 2 3for (size_t ix = 0; ix != 10; ++ix) 4 intStack.push(ix); 5// 相当于调用deque的push_back 6 7while (!intStack.empty()) 8{ 9 int value = intStack.top(); 10 intStack.pop(); 11}