Qt 中的数据结构类(1):QQueue,QStack

1、C++中的queue

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

用法 ( 以 int 型为例 ):

queue<int> Q;                  //定义一个int型队列
Q.empty();                      //返回队列是否为空
Q.size();                        //返回当前队列长度
Q.front();                       //返回当前队列的第一个元素
Q.back();                        //返回当前队列的最后一个元素
Q.push();                     //在队列后面插入一个元素, 比如插入数字5: Q.push(5)
Q.pop();                        //从当前队列里,移出第一个元素

代码示例:

#include <iostream>
#include <queue>

using namespace std;
int main()
{
       queue<int> 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;
}

image.png

QT中的QQueue

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

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

QQueue<int> 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 <QApplication>
#include <QQueue>
#include <QDebug>

int main(int argc,char * argv[])
{
    QQueue<int> 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 <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;
}

image.png

QT中的 QStack

头文件 #include < QStack >

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

QStack <int> s;                         //定义一个int型栈
s. isEmpty();                           //返回栈是否为空
s.size();                                //返回当前栈中元素的个数  
s.push();                                //在栈顶上堆进一个元素
s.pop();                                 //删除掉栈顶上的元素,并返回这个元素
s.top();                                 //返回栈顶的元素,并不会删除  
T &  operator[] ( int i );              //以数组形式访问队列元素

代码示例:

#include <QApplication>
#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

版权声明:本文为CSDN博主「静下心来学Qt」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_35379003/article/details/103399487



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864