专栏首页Linux驱动C++中的stack类、QT中的QStack类

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 4.C++中的函数重载,C++调用C代码,new/delete关键字,namespace(命名空间)

    可以看到输出结果,每个函数的入口地址都不一样(重载函数的入口地址,必须使用强制转换来获取)

    张诺谦
  • 6.AVCodecContext和AVCodec

    AVCodecContext 结构表示程序运行的当前 Codec 使用的上下文,着重于所有 Codec 共有的属性(并且是在程序运行时才能确定其值)和关联其他结...

    张诺谦
  • C++内联函数,默认参数,占位参数

    之前讲过宏定义会经过预处理器进行文本替换,缺点就在于没有类型检查,没有任何编译过程,编译器根本不知道类型是什么.

    张诺谦
  • 关于栈的简单应用的小例子

    栈是一种只允许在一端进行插入和删除操作的线性表。在栈中,进行操作的一端叫做栈顶,相应地,另一端称为栈底。

    Reborn Lee
  • 栈的基本操作就是出栈和入栈,这两个的时间复杂度都是O(1) 数据结构 typedef struct Stack{ int data[MAXSIZE]; ...

    用户1154259
  • java进阶|Stack源码解析和理解

    Stack这个数据结构还是比较容易理解的,满足LIFO,即先进后出,看下它的结构图,然后分析一下源码进行理解一下。

    后端Coder
  • F-Stack Q&A 第二期

    Q1:请问再视频领域,媒体服务器,使用F-Stack是否合适? A1:F-Stack在纯推流的模式上是支持且合适的,如果有转码服务等计算密集型服务,需要等我们支...

    F-Stack
  • BZOJ1101: [POI2007]Zap(莫比乌斯反演)

    Description   FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a ,y<=b,并且gc...

    attack
  • C++初始化列表

    一、什么是初始化列表 与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段 二、...

    用户1215536
  • 【未完成】【leetcode第 165 场周赛】分割回文串 III

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。 ...

    韩旭051

扫码关注云+社区

领取腾讯云代金券