stack 是容器适配器的一种。要使用 stack,必须包含头文件 <stack>。
stack就是“栈”。栈是一种后进先出的元素序列,访问和删除都只能对栈顶的元素(即最后一个被加入栈的元素)进行,并且元素也只能被添加到栈顶。栈内的元素不能访问。如果一定要访问栈内的元素,只能将其上方的元素全部从栈中删除,使之变成栈顶元素才可以。
stack的定义如下:
template < class T, class Cont == deque <T> >
class stack{
...
};
第二个参数表明,在默认情况下,stack 就是用 deque 实现的。当然,也可以指定用 vector 或 list 实现。
虽然 stack 使用顺序容器实现,但它不提供顺序容器具有的成员函数。变量命名方式为:
stack<int> c; //声明了一个int类型的栈变量
1. 弹出(即删除)栈顶元素
void pop();
c.pop(); //删除栈顶元素
2. 在栈顶插入一个元素
void push(const value_type& val)
c.push(value);//在栈顶插入元素value
3. 返回栈顶元素
value_type& top();
const value_type &top() const;
c.top(); //返回栈顶元素
4. 判断栈是否为空,空返回true,不空返回false
bool empty() const
stack<int> c; //定义一个int类型的栈
c.empty(); //栈空返回true,否则返回false
5. 返回栈中元素数量
size_type size() const
c.size();
6. 在栈顶增加一个元素
void emplace(args&& args);
c.emplace(value);
7. 交换两个栈中的内容
void swap (stack& x);
c.swap(d);