Qt中文文档-QMapIterator

QMapIterator 类

template <typename Key, typename T> class QMapIterator

QMapIterator 类为 QMapQMultiMap 提供 Java 风格的常量迭代器。更多内容…

头文件: #include
qmake: QT += core

公共成员函数

QMapIterator(const QMap<Key, T> &map)
QMapIterator<Key, T> & operator=(const QMap<Key, T> &container)
bool findNext(const T &value)
bool findPrevious(const T &value)
bool hasNext() const
bool hasPrevious() const
const Key & key() const
QMapIterator::Item next()
QMapIterator::Item peekNext() const
QMapIterator::Item peekPrevious() const
QMapIterator::Item previous()
void toBack()
void toFront()
const T & value() const

详细描述

QMap 同时提供 Java 风格迭代器STL 风格迭代器。Java 风格迭代器比 STL 风格迭代器更高级,更容易使用;同时也略微低效。

QMapIterator<Key, T> 用来遍历 QMap (或 QMultiMap)。如果想在遍历时修改 map,要使用 QMutableMapIterator

QMapIterator 构造函数接受 QMap 作为参数。构造后,迭代器位于 map 的最开始位置(第一个元素之前)。下面的例子演示如何顺序遍历所有元素:

QMap map;
...
QMapIterator i(map);
while (i.hasNext()) {
    i.next();
    qDebug() << i.key() << ": " << i.value();
}

next() 函数返回 map 中的下一个元素并将迭代器前移。key() 和 value() 函数返回跳过的最后一个元素的键和值。

与 STL 风格迭代器不同,Java 风格迭代器指向元素之间而不是直接指向元素。第一次调用 next() 前移迭代器到第一个和第二个元素之间的位置,并返回第一个元素;第二次调用 next() 前移迭代器到第二个和第三个元素之间的位置;以此类推。

img

下面的例子演示如何反序遍历元素:

QMapIterator i(map);
i.toBack();
while (i.hasPrevious()) {
    i.previous();
    qDebug() << i.key() << ": " << i.value();
}

如果想查找特定值的所有实例,循环使用 findNext() 或 findPrevious()。例如:

QMapIterator i(map);
while (i.findNext(widget)) {
    qDebug() << "Found widget " << widget << " under key "
             << i.key();
}

同一 map 可以使用多个迭代器。如果在 QMapIterator 处于活动状态时修改 map,QMapIterator 将继续在原 map 上遍历,而忽略修改后的副本。

另请参阅 QMutableMapIteratorQMap::const_iterator.

成员函数文档

bool QMapIterator::findPrevious(const T &value)

从当前迭代器位置开始向后查找值 value*。如果找到值为 *value 的键值对,返回 true;否则返回 false

调用该函数后,如果找到值,迭代器将被移动到匹配元素的前面;否则,迭代器将被移动到容器的前端。

另请参阅 findNext()。

bool QMapIterator::findNext(const T &value)

从当前迭代器位置开始向前查找值 value*。如果找到值为 *value 的键值对,返回 true;否则返回 false

调用该函数后,如果找到值 value,迭代器将被移动到匹配元素的后面;否则,迭代器将被移动到容器的末端。

另请参阅 findPrevious()。

const Key &QMapIterator::key() const

调用遍历函数(next(),previous(),findNext(),findPrevious())后,该函数返回跳过的最后一个元素的键。

调用 next() 或 findNext() 后,key() 与 peekPrevious().key() 相同。调用 previous() 或 findPrevious() 后,key() 与 peekNext().key() 相同。

另请参阅 value()。

QMapIterator::Item QMapIterator::peekPrevious() const

不移动迭代器而返回前一个元素。

对返回值调用 key() 获取元素的键,调用 value() 获取元素的值。

对位于容器前端的迭代器调用该函数将导致未定义结果。

另请参阅 hasPrevious(),previous() 和 peekNext().

QMapIterator::Item QMapIterator::previous()

返回前一个元素并将迭代器向后移动一个位置。

对返回值调用 key() 获取元素的键,调用 value() 获取元素的值。

对位于容器前端的迭代器调用该函数将导致未定义结果。

另请参阅 hasPrevious(),peekPrevious() 和 next()。

bool QMapIterator::hasPrevious() const

如果该迭代器前面至少有一个元素,返回 true,即该迭代器不在容器的前端;否则返回 false

另请参阅 hasNext() 和 previous()。

bool QMapIterator::hasNext() const

如果该迭代器后面至少有一个元素,返回 true,即该迭代器不在容器的末端;否则返回 false

另请参阅 hasPrevious() 和 next()。

void QMapIterator::toBack()

将迭代器移动到容器的末端(最后一个元素之后)。

另请参阅 toFront() 和 previous()。

void QMapIterator::toFront()

将迭代器移动到容器的前端(第一个元素之前)。

另请参阅 toBack() 和 next()。

QMapIterator<Key, T> &QMapIterator::operator=(const QMap<Key, T> &container)

将迭代器关联到 container 来遍历 map。迭代器将被移动到 map 的前端(第一个元素之前)。

另请参阅 toFront() 和 toBack()。

QMapIterator::QMapIterator(const QMap<Key, T> &map)

构造一个迭代器来遍历 map。迭代器将被移动到 map 的前端(第一个元素之前)。

另请参阅 operator=()。

QMapIterator::Item QMapIterator::next()

返回下一个元素并将迭代器向前移动一个位置。

对返回值调用 key() 获取元素的键,调用 value() 获取元素的值。

对位于容器末端的迭代器调用该函数将导致未定义结果。

另请参阅 hasNext(),peekNext() 和 previous()。

QMapIterator::Item QMapIterator::peekNext() const

不移动迭代器而返回下一个元素。

对返回值调用 key() 获取元素的键,调用 value() 获取元素的值。

对位于容器末端的迭代器调用该函数将导致未定义结果。

另请参阅 hasNext(),next() 和 peekPrevious()。

const T &QMapIterator::value() const

调用遍历函数(next(),previous(),findNext(),findPrevious())后,该函数返回跳过的最后一个元素的值。

调用 next() 或 findNext() 后,value() 与 peekPrevious().value() 相同。调用 previous() 或 findPrevious() 后,value() 与 peekNext().value() 相同。

另请参阅 key()。


文章作者: 张小飞
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 张小飞 !
 上一篇
Qt中文文档-QMultiHash Qt中文文档-QMultiHash
QMultiHash 类template <typename Key, typename T> class QMultiHash QMultiHash 类是一个便利的 QHash 派生类,提供多值哈希表功能。更多内容… 头
下一篇 
Qt中文文档-QMap-iterator Qt中文文档-QMap-iterator
iterator 类class QMap::iterator QMap::iterator 类为 QMap 和 QMultiMap 提供 STL 风格的非常量迭代器。更多内容… 所有成员列表,包括继承的成员 公共成员类型 typed
  目录