前言
Qt提供了一些顺序容器:QList, QLinkedList, QVector, QStack, QQueue
顺序容器:容器中的数据都是一个接一个线性存储的,所以称为顺序容器,
QLinkedList: 需要使用一个链表时
QVector: 希望数据项可以占用连续的内存空间
QStack: 后进先出(LIFO)
QQueue: 先进先出(FIFO)
对于大多数程序而言,使用最多而且最好用的是QList, 这里使用QList 熟悉,其他几个容器可以参照进行操作,因为他们的接口函数相似,也可以参考他们的帮助文档
QList是一个模板类,提供了一个列表,QList实际上是一个T类型项目的指针数组,支持基于索引的访问,而且当项目数目小于1000时,可以实现在列表中间进行快速的插入操作。
过程
选择Qt控制台应用(Qt Console Application), 不需要使用图形界面,只需要建立控制台程序
头文件
#include <QList> #include <QDebug>
写入,插入项目
QList <QString> list; list << aa<< bb <<cc; //插入项目
直接赋值
if(list[1] == bb) list[1] = ab;
替换
list.replace(2, bc); //将cc换位bc
输出整个列表,使用at()函数,他比"[ ]"操作符要快很多
qDebug() << the list is: ; //输出整个列表 for(int i = 0; i < list.size(); ++i) { qDebug() << list.at(i); //现在的列表为aa ab bc }
列表尾部添加,头部添加
list.append(dd); //在列表尾部添加 list.prepend(mm); //在列表的头部添加
拿走,删除并获取
QString str = list.takeAt(2); //从列表中删除第三个项目,并获取它 qDebug() << at(2) item is: << str;
位置插入项目
list.insert(2, mm); //在位置2插入项目
位置交换
list.swap(1,3); // 交换项目1和项目3
是否包含,布尔量
qDebug() << contains 'mm'? << list.contains(mm); //列表中是否包含mm
项目个数
qDebug()<< the 'mm' count: << list.count(mm); //包含mm的个数
遍历索引,查找项目位置
//第一个mm的位置,默认从位置0开始往前查找,返回第一个匹配的项目的位置 qDebug() << the first 'mm' index: << list.indexOf(mm); //第二个mm的位置,我们指定从位置1开始往前查找 qDebug()<< the second 'mm' index: << list.indexOf(mm, 1);