Qt STL类型迭代器

1.简介

STL迭代器与Qt和STL的原生算法兼容,并且进行了速度优化;对于每一个容器类,都有两个STL类型迭代器:一个用于只读访问,一个用于读写访问。无需修改数据时建议使用只读迭代器,因为速度更快。

下表为类型总表:

STL 类型的迭代器类
容器类 只读迭代器 读写迭代器
QList, QQueue QList::const iterator QList::iterator
QLinkedList Q1. i nked List<1>: :const_iterator QLinkedList::iterator
QVector, QStack QVector::const_ilerator QVector::iterator
QSet QSet::const_iterator QSet::iterator
QMap QMultiMap QMap::const_iterator QMap:: iterator
QHash QMultiHash QHash: :const_iterator QHash::iterator

在定义只读迭代器和读写迭代器时的区别,它们使用了不同的关健字,const_iterator 定义只读迭代器,iterator 定义读写迭代器。

此外,还可以使用 const_reverse_iterator 和 reverse_iterator 定义相应的反反向迭代器。

STL 类型的迭代器是数组的指针,所以“++”运算符使迭代器指向下一个数据项,运算符返回数据项内容。STL 迭代器直接指向数据项。

  • begin()指向容器的第一个数据项
  • end()是无效的数据项,表示结束

2.示例

使用QList只读迭代器遍历输出数据。

QList list;
list << "1" << "2" << "3" << "4";
QList::const_iterator i;
for (i = list.constBegin(); i != list.constEnd(); ++i)
    qDebug() << *i;

使用QMap只读迭代器遍历输出数据。

QMap map;
map[1] = 1;
map[2] = 2;
map[3] = 3;

QMap::const_iterator i;
for (i = map.constBegin(); i != map.constEnd(); ++i)
    qDebug () << i.key () << ':' << i.value ();

你可能感兴趣的:(Qt基础,qt,c++,开发语言,迭代器)