您的位置:首页 > 编程语言 > Qt开发

Qt: 容器类和迭代器类、foreach关键字

2016-07-18 01:40 441 查看

引言:

容器类和迭代器类提供 删除、修改、插入和保存数据的功能。

这两种类可以将各种数据类型的数据以元素为单位进行存储。

例如:

不使用Qt提供的容器类:如果要将QString类型的数据存储到数组,则事先我们必须要知道有多少个元素需要存储。

使用Qt提供的容器类:容器类将QString数据存储到可变大小的数组时,可以使用QVector<QString>的容器类插入、删除和修改数据。十分的方便。

Qt容器类

Qt提供的容器类非常简单、轻便和安全。Qt还提供foreach关键字,使用该关键字可以轻松的访问容器类存储的元素。

Qt容器类(表)



容器类可以将多种数据集合为一体。如:QMap<QString , QList<int>>。

风格:

容器类用于存储数据,而迭代器类则用于访问容器类存储的特定项目的聚合模式。根据迭代器的风格,可以分为java风格和STL风格。

个人感觉java风格的迭代器模式要比STL风格的迭代器模式使用起来更为方便。对于各个容器类,java风格的迭代器有两种数据类型,分别是
只读访问模式读写访问模式

容器只读迭代器读写迭代器
Qlist<T>,Qqueue<T>QListIterator<T>QMutableListIterator<T>
QLinkList<T>QLinkListIterator<T>QMutableLinkListIterator<T>
Qvector<T>,Qstack<T>QVectorIterator<T>QMutableVectorIterator<T>
Qset<T>QSetIterator<T>QMutableSetIterator<T>
Qmap<Key,T>,QMultiMap<Key,T>QMapIterator<Key,T>QMutableMapIterator<Key,T>
Qhash<Key,T>,QMultiHash<Key,T>QHashIterator<Key,T>QMutableHashIterator<Key,T>

java风格容器类实例:

#include <QCoreApplication>
#include <QDebug>
#include <QList>
#include <QListIterator>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

QList<QString>list;
list<<"123"<<"456"<<"789";
QListIterator<QString>m(list);
while (m.hasNext()) {
qDebug()<<m.next();

}

qDebug()<<"******";

while(m.hasPrevious())
{
qDebug()<<m.previous();
}
return a.exec();
}

运行结果:



foreach关键字:

使用foreach关键字访问迭代器

格式:foreach(变量,容器)

注意:foreach关键字不是C++标准提供的,而是由Qt提供的。

实例:

#include <QCoreApplication>
#include <QDebug>
#include <QList>
#include <QListIterator>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

QList<QString>list;
list<<"123"<<"456"<<"789";

QString str;

foreach (str, list) {
qDebug()<<str;
}
return a.exec();
}

运行结果:



各个容器类提供的函数,可以通过查看Qt Assistant获取。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: