Qt: 容器类和迭代器类、foreach关键字
容器类和迭代器类提供 删除、修改、插入和保存数据的功能。这两种类可以将各种数据类型的数据以元素为单位进行存储。
·
引言:
容器类和迭代器类提供 删除、修改、插入和保存数据的功能。
这两种类可以将各种数据类型的数据以元素为单位进行存储。
例如:
不使用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获取。
更多推荐
已为社区贡献1条内容
所有评论(0)