程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> STL學習系列四:Stack容器,stl系列stack容器

STL學習系列四:Stack容器,stl系列stack容器

編輯:C++入門知識

STL學習系列四:Stack容器,stl系列stack容器


STL學習系列四:Stack容器

 

Stack簡介

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

1.stack對象的默認構造

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

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

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

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

                               

//尖括號內還可以設置指針類型或自定義類型。

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的數據存取

  • 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個元素
    }

}
復制代碼

下面是以上的所有代碼:

復制代碼
#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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved