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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异