zl程序教程

您现在的位置是:首页 >  工具

当前栏目

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

QtC++ Stack
2023-09-27 14:28:33 时间

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