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