STL學習系列四:Stack容器

STL學習系列四:Stack容器

 

Stack簡介html

  • stack是堆棧容器,是一種「先進後出」的容器。
  • stack是簡單地裝飾deque容器而成爲另外的一種容器。
  • #include <stack>  

1.stack對象的默認構造ios

stack採用模板類實現, stack對象的默認構造形式: stack <T> stkT; 函數

stack <int> stkInt;            //一個存放int的stack容器。post

stack <float> stkFloat;     //一個存放float的stack容器。學習

stack <string> stkString;     //一個存放string的stack容器。url

                               

//尖括號內還能夠設置指針類型或自定義類型。spa

2.stack的push()與pop()方法指針

  • stack.push(elem);   //往棧頭添加元素
  • stack.pop();   //從棧頭移除第一個元素
複製代碼
#include<iostream>
using namespace std;
#include <stack>
void objPlay2()
{
    stack<int> stkInt;
    stkInt.push(1); //放進去1
    stkInt.push(3);  //放進去3
    stkInt.pop();  //彈出來一個元素
    stkInt.push(5);  //放進去5
    stkInt.push(7); //放進去7
    stkInt.push(9); //放進去9     此時元素就是1,5,7,9
    stkInt.pop(); //彈出來一個元素
    stkInt.pop();//彈出來一個元素   此時元素就是1,5

}
int main()
{
  objPlay2();
return 0;  
}
複製代碼

3.stack對象的拷貝構造與賦值

  • stack(const stack &stk);                //拷貝構造函數
  • stack& operator=(const stack &stk);      //重載等號操做符
複製代碼
void objPlay3()
{
    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;
    stkIntC = stkIntA;                //賦值

}
複製代碼

 4.stack的數據存取code

  • stack.top();           //返回最後一個壓入棧元素
複製代碼
void objPlay4()
{
    stack<int> stkIntA;
    stkIntA.push(1);
    stkIntA.push(3);
    stkIntA.push(5);
    stkIntA.push(7);
    stkIntA.push(9);

    int iTop = stkIntA.top();        //獲取棧頂元素,那就是9,top只是獲取棧頂元素,pop是彈出棧頂元素
    stkIntA.top() = 19;            //19

}
複製代碼

5.stack的大小

  • stack.empty();   //判斷堆棧是否爲空
  • stack.size();             //返回堆棧的大小
複製代碼
void objPlay5()
{
    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個元素
    }

}
複製代碼

下面是以上的全部代碼:htm

複製代碼
#include<iostream>
using namespace std;
#include <stack>
void objPlay2()
{
    stack<int> stkInt;
    stkInt.push(1); //放進去1
    stkInt.push(3);  //放進去3
    stkInt.pop();  //彈出來一個元素
    stkInt.push(5);  //放進去5
    stkInt.push(7); //放進去7
    stkInt.push(9); //放進去9     此時元素就是1,5,7,9
    stkInt.pop(); //彈出來一個元素
    stkInt.pop();//彈出來一個元素   此時元素就是1,5

}
void objPlay3()
{
    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;
    stkIntC = stkIntA;                //賦值

}
void objPlay4()
{
    stack<int> stkIntA;
    stkIntA.push(1);
    stkIntA.push(3);
    stkIntA.push(5);
    stkIntA.push(7);
    stkIntA.push(9);

    int iTop = stkIntA.top();        //獲取棧頂元素,那就是9,top只是獲取棧頂元素,pop是彈出棧頂元素
    stkIntA.top() = 19;            //19

}
void objPlay5()
{
    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個元素
    }

}
int main()
{
    objPlay2();
    objPlay3();
    objPlay4();
    objPlay5();

    return 0;
}

轉載自http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_stl_004.html
相關文章
相關標籤/搜索