Qt中的STL的每一个容器类,都有两个STL类型迭代器,一个用于只读访问,一个用于读写访问:
容器类 | 只读迭代器 | 读写迭代器 |
---|---|---|
QList,QQueue | QList::const_iterator | QList::iterator |
QLinkedList | QLinkedList::const_iterator | QLinkedList::iterator |
QVector,QStack | QVector::const_iterator | QVector::iterator |
QSet | QSet::const_itreator | QSet::iterator |
QMap<Key,T> | QMap<Key,T>::const_iterator | QMap<Key,T> ::iterator |
QMultiMap<Key,T> | QMap<Key,T>::const_iterator | QMap<Key,T>::iterator |
QHash<Key,T> | QHash<Key,T>::const_iterator | QHash<Ket,T>::iterator |
const_iterator定义只读迭代器,iterator定义读写迭代器,还可以使用const_reverse_iterator和reverse_iterator定义相应的反向迭代器。
STL类型的迭代器是数组的指针,所以“++”运算符使迭代器指向下一个数据项。“*”运算符返回数据项的内容。
begin()函数指向容器的第一个数据项,end()函数指向一个虚拟的表示结尾的数据项。end()表示的数据项是无效的,一般用作循环结束的条件。
STL顺序容器类的迭代器的用法:
constBegin()和constEnd()用于只读迭代器,表示起始和结束位置。
例:
#include <QCoreApplication>
#include <QMap>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QList<QString> list;
list