1. 程式人生 > >STL標準庫Stack

STL標準庫Stack

STL之Stack

1.簡介

  • stack是堆疊容器,是一種“先進後出”的容器。
  • stack是簡單地裝飾deque容器而成為另外的一種容器。 
    #include <stack>

2.stack物件的預設構造

stack採用模板類實現, stack物件的預設構造形式: stack <T> stkT;

stack <int> stkInt;            //一個存放int的stack容器。
stack <float> stkFloat;     //一個存放float的stack容器。
stack <string> stkString;     //一個存放string的stack容器。
... //尖括號內還可以設定指標型別或自定義型別。
  • 1
  • 2
  • 3
  • 4
  • 5

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  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

4.物件的拷貝構造與賦值

stack(const stack &stk);             //拷貝建構函式
stack& operator=(const stack &stk); //過載等號操作符
  • 1
  • 2
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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

6.stack的大小

stack.empty();   //判斷堆疊是否為空
stack.size();        //返回堆疊的大小
  • 1
  • 2
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
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

stack不可以像遍歷vector和deque一樣用迭代器或者陣列下標以及at成員函式隨即訪問stack裡面的元素。