Qt 第5课、Qt 中的数据结构类

1、C++中的queue

实现一种 先进先出 的数据结构,是一个模板类。头文件 #include

用法 ( 以 int 型为例 ):

queue Q;                  //定义一个int型队列

Q.empty();                      //返回队列是否为空

Q.size();                        //返回当前队列长度

Q.front();                       //返回当前队列的第一个元素

Q.back();                        //返回当前队列的最后一个元素

Q.push();                     //在队列后面插入一个元素, 比如插入数字5: Q.push(5)

Q.pop();                        //从当前队列里,移出第一个元素

代码示例:

#include 
#include 

using namespace std;
int main()
{
       queue Q;

       cout<<"queue empty: " << Q.empty() << endl;

       for(int i = 0; i < 5; i++)
       {
              Q.push(i);                                //进队列
       }

       cout << "queue empty: " << Q.empty() << endl;
       cout << "queue size: " << Q.size() << endl;
       cout << endl;

       for(int i = 0; i < 5; i++)
       {
          cout << "queue front:  "<< Q.front() << endl;
          Q.pop();                                      //出队列
       }

       return 0;
}

Qt 第5课、Qt 中的数据结构类_第1张图片

QT中的QQueue

它的父类是QList,是个模板类。头文件: #include

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

QQueue Q;                 //定义一个int型队列

Q.isEmpty();                      //返回队列是否为空

Q.size();                        //返回队列元素个数

Q.clear();                        //清空队列

Q.enqueue();                      //在队列尾部添加一个元素, 比如插入数字5: Q.enqueue(5)

Q.dequeue();                     //删除当前队列第一个元素,并返回这个元素

Q.head();                        //返回当前队列第一个元素

Q.last();                        //返回当前队列尾部的元素

T&  operator[]( int i );         //以数组形式访问队列元素

代码示例:

#include 
#include 
#include 

int main(int argc,char * argv[])
{
    QQueue Q;                              	//定义一个int型队列
    qDebug() << "queue empty:  " << Q.isEmpty();    //返回队列是否为空

    for(int i = 0; i < 5; i++)
    {
         Q.enqueue(i);      //入队
    }

    qDebug() << "queue empty:  " << Q.isEmpty();
    qDebug() << "queue size:  " << Q.size();

    for(int i = 0; i < 5; i++)
    {
     	qDebug() << "queue last:  " << Q.last();            //返回当前队列最后一个个元素
    	qDebug() << "queue head:  " << Q.dequeue();         //出队列,并且返回当前队列第一个元素
    }

    qDebug() << "queue empty:  " << Q.isEmpty();
    qDebug() << "queue size:  " << Q.size();

    return 0;
}

打印:

queue empty:   true 
queue empty:   false 
queue size:   5 
queue last:   4 
queue head:   0 
queue last:   4 
queue head:   1 
queue last:   4 
queue head:   2 
queue last:   4 
queue head:   3 
queue last:   4 
queue head:   4 
queue empty:   true 
queue size:   0 

2、C++中的 stack

实现一种 先进后出 的数据结构,是一个模板类。在intel系统中栈是向下生长的,头文件 #include

用法(以 int 型为例):

stack  s;              //定义一个int型栈

s.empty();                        //返回栈是否为空

s.size();                         //返回当前栈中元素的个数  

s.push();                         //在栈顶上堆进一个元素
 
s.pop();                          //删除掉栈顶上的元素

s.top();                          //返回栈顶的元素,并不会删除  

代码示例:

#include 
#include 
using namespace std;

int main()
{
       stack 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 第5课、Qt 中的数据结构类_第2张图片
QT中的 QStack

头文件 #include < QStack >

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

QStack  s;                         //定义一个int型栈

s. isEmpty();                           //返回栈是否为空

s.size();                                //返回当前栈中元素的个数  

s.push();                                //在栈顶上堆进一个元素

s.pop();                                 //删除掉栈顶上的元素,并返回这个元素

s.top();                                 //返回栈顶的元素,并不会删除  

T &  operator[] ( int i );              //以数组形式访问队列元素

代码示例:

#include 
#include 
#include 
int main(int argc,char * argv[])
{
    QStack  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

你可能感兴趣的:(Qt)