C++中的stack類、QT中的QStack類


C++中的stack

實現一種先進后出的數據結構,是一個模板類.

頭文件 #include<stack>

用法(以int型為例):

stack <int> s;              //定義一個int型棧
 s.empty(); //返回棧是否為空
 s.size(); //返回當前棧中元素的個數 
 s.push(); //在棧頂上堆進一個元素
 s.pop(); //刪除掉棧頂上的元素
 s.top(); //返回棧頂的元素,並不會刪除 

 

代碼示例:

#include <iostream> #include <stack>
using namespace std; int main() { stack<int> s; cout<<"stack empty? "<<s.empty()<<endl; for(int i=0;i<5;i++) { s.push(i); //入棧 } cout<<"stack empty? "<<s.empty()<<endl; cout<<"stack size: "<<s.size()<<endl; cout<<endl;
for(int i=0;i<5;i++) { cout<<"stack top: "<<s.top()<<endl; s.pop(); //出棧 } return 0; }

 

QT中的QStack

它的父類是QVector,是個模板類

頭文件 #include <QStack>

常用用法(以int型為例):

QStack <int> s;                         //定義一個int型棧
 s. isEmpty();    //返回棧是否為空
 s.size(); //返回當前棧中元素的個數 
 s.push(); //在棧頂上堆進一個元素
 s.pop(); //刪除掉棧頂上的元素,並返回這個元素
 s.top(); //返回棧頂的元素,並不會刪除 
 T &  operator[] ( int i );            //以數組形式訪問隊列元素

 

代碼示例:

 

#include <QtGui>
#include <QStack>
#include <QDebug>
int main(int argc,char * argv[])
{
    QStack <int> s;            //定義一個int型棧
    qDebug()<<"Stack empty:  "<<s.isEmpty();  //返回棧是否為空
    for(int i=0;i<5;i++)
    {
         s.push(i);      //入棧
    }
    qDebug()<<"Stack empty:  "<<s.isEmpty();
    qDebug()<<"Stack size:  "<<s.size();
    for(int i=0;i<5;i++)
    {
     qDebug()<<"Stack top:  "<<s.pop();           //出棧,並查看當前棧頂第一個元素
    }
    qDebug()<<"Stack empty:  "<<s.isEmpty();
    qDebug()<<"Stack size:  "<<s.size();
    return 0;
}

 

 

 

運行:

Stack empty: true Stack empty: false Stack size: 5 Stack top: 4 Stack top: 3 Stack top: 2 Stack top: 1 Stack top: 0 Stack empty: true Stack size: 0

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM