Qt: 容器类和迭代器类、foreach关键字
Qt,容器类,迭代器类,foreach关键字,实例2016-07-18
容器类和迭代器类提供 删除、修改、插入和保存数据的功能。
这两种类可以将各种数据类型的数据以元素为单位进行存储。
例如:
不使用Qt提供的容器类:如果要将QString类型的数据存储到数组,则事先我们必须要知道有多少个元素需要存储。
使用Qt提供的容器类:容器类将QString数据存储到可变大小的数组时,可以使用QVector<QString>的容器类插入、删除和修改数据。十分的方便。
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> |
#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关键字不是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获取。