STL之Stack

1.简介

  • stack是堆栈容器,是一种“先进后出”的容器。
  • stack是简单地装饰deque容器而成为另外的一种容器。 

#include <stack>

2.stack对象的默认构造

stack <T> stkT;

stack <int> stkInt;            //一个存放int的stack容器。
stack <float> stkFloat;     //一个存放float的stack容器。
stack <string> stkString;     //一个存放string的stack容器。
...                 
//尖括号内还可以设置指针类型或自定义类型。

3.stack的push()与pop()方法

stack.push(elem);   //往栈头添加元素
stack.pop();   //从栈头移除第一个元素

stack<int> stkInt;      
stkInt.push(1);stkInt.push(3);stkInt.pop();   
stkInt.push(5);stkInt.push(7);  
stkInt.push(9);stkInt.pop();    
stkInt.pop();  
//此时stkInt存放的元素是1,5

4.对象的拷贝构造与赋值

stack(const stack &stk);             //拷贝构造函数
stack& operator=(const stack &stk); //重载等号操作符


stack<int> stkIntA;
stkIntA.push(1);
stkIntA.push(3);
stkIntA.push(5);
stkIntA.push(7);
stkIntA.push(9);

stack<int> stkIntB(stkIntA);        //拷贝构造
stack<int> stkIntC;

5.数据存取

stack.top();      //返回最后一个压入栈元素
stack<int> stkIntA;
stkIntA.push(1);
stkIntA.push(3);
stkIntA.push(5);
stkIntA.push(7);
stkIntA.push(9);

int iTop = stkIntA.top();       //9
stkIntA.top() = 19;         //19

6.stack的大小

stack.empty();   //判断堆栈是否为空
stack.size();        //返回堆栈的大小
stack<int> stkIntA;
stkIntA.push(1);
stkIntA.push(3);
stkIntA.push(5);
stkIntA.push(7);
stkIntA.push(9);

if (!stkIntA.empty())
{
    int iSize = stkIntA.size();     //5
}

stack不可以像遍历vector和deque一样用迭代器或者数组下标以及at成员函数随即访问stack里面的元素。