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;
}
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;
}
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


少有人走的路

















