QMultiMapIterator 类

template <typename Key, typename T> class QMultiMapIterator

QMultiMapIterator 类提供了对 QMultiMap 的 Java 风格常量迭代器。QMultiMap 既有 Java 风格迭代器,也有 STL 风格迭代器。STL 风格迭代器更高效,应优先使用。有关更多信息,请参阅 这里

头文件 #include <QMultiMapIterator>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core

公共函数

QMultiMapIterator(const QMultiMap<Key, T> &map)
boolfindNext(const T &value)
boolfindPrevious(const T &value)
boolhasNext() const
boolhasPrevious() const
const Key &key() const
QMultiMapIterator<Key, T>::Itemnext()
QMultiMapIterator<Key, T>::ItempeekPrevious() const
QMultiMapIterator<Key, T>::Itemprevious()
voidtoBack()
voidtoFront()
const T &value() const
QMultiMapIterator<Key, T> &operator=(const QMultiMap<Key, T> &container)

详细描述

QMultiMapIterator<Key, T> 允许您迭代遍历一个 QMultiMap。如果您在迭代过程中要修改映射,请使用 QMutableMultiMapIterator

QMultiMapIterator 的构造函数需要一个 QMultiMap 参数。构造之后,迭代器位于地图的起始位置(在第一个项目之前)。以下是按顺序遍历所有元素的方法:

QMultiMap<int, QWidget *> multimap;
...
QMultiMapIterator<int, QWidget *> i(multimap);
while (i.hasNext()) {
    i.next();
    qDebug() << i.key() << ": " << i.value();
}

next() 函数返回地图中的下一个项目并移动迭代器。函数 key() 和 value() 返回上一次跳过的最后一个项目的键和值。

与 STL 风格的差异,Java 风格的迭代器在项目之间而不是直接在项目上指向。第一次调用 next() 将迭代器 advancing 到第一个和第二个项目之间的位置并返回第一个项目;第二次调用 next() 将迭代器 advancing 到第二个和第三个项目之间的位置;以此类推。

以下是按逆序遍历元素的方法:

QMultiMapIterator<int, QWidget *> i(multimap);
i.toBack();
while (i.hasPrevious()) {
    i.previous();
    qDebug() << i.key() << ": " << i.value();
}

如果要在循环中使用查找特定值的所有发生,请使用循环中的 findNext() 或 findPrevious()。例如:

QMultiMapIterator<int, QWidget *> i(multimap);
while (i.findNext(widget)) {
    qDebug() << "Found widget " << widget << " under key "
             << i.key();
}

可以在同一张地图上使用多个迭代器。如果在 QMultiMapIterator 处于活动状态时修改了地图,QMultiMapIterator 将继续迭代原始地图,忽略已修改的副本。

另见 QMutableMultiMapIterator

成员函数文档

QMultiMapIterator::QMultiMapIterator(const QMultiMap<Key, T> &map)

构造一个迭代器以便遍历 map。迭代器将被设置为地图的开始位置(在第一个项目之前)。

另见 操作符=

QMultiMapIterator<Key, T> &QMultiMapIterator::operator=(const QMultiMap<Key, T> &container)

使迭代器在 map 上操作。迭代器将被设置为地图的开始位置(在第一个项目之前)。

另见 toFront() 和 toBack

void QMultiMapIterator::toFront()

将迭代器移动到容器的开头(在第一个项目之前)。

另见 toBack() 和 next

void QMultiMapIterator::toBack()

将迭代器移动到容器的末尾(在最后一个项目之后)。

另见 toFront() 和 previous

bool QMultiMapIterator::hasNext() const

如果迭代器前方至少有一个项目,则返回 true,即迭代器不在容器的末尾;否则返回 false

另见 hasPrevious() 和 next

QMultiMapIterator<Key, T>::Item QMultiMapIterator::next()

返回下一个项目并将迭代器向前推进一个位置。

在返回值上调用 key() 来获取项目的键,并调用 value() 来获取值。

在容器的末尾的迭代器上调用此函数将导致不确定的结果。

另见 hasNext(),peekNext() 和 previous

bool QMultiMapIterator::hasPrevious() const

如果迭代器后方至少有一个项目,则返回 true,即迭代器不在容器的开头;否则返回 false

另见 hasNext() 和 previous

QMultiMapIterator<Key, T>::Item QMultiMapIterator::previous()

返回上一个项目并将迭代器向后移动一个位置。

在返回值上调用 key() 来获取项目的键,并调用 value() 来获取值。

在容器的开头位置的迭代器上调用此函数将导致不确定的结果。

另见 hasPrevious(),peekPrevious() 和 next

QMultiMapIterator<Key, T>::Item QMultiMapIterator::peekPrevious() const

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

在返回值上调用 key() 来获取项目的键,并调用 value() 来获取值。

在容器的开头位置的迭代器上调用此函数将导致不确定的结果。

另请参阅 hasPrevious(),previous(),以及 peekNext()。

const T &QMultiMapIterator::value() const

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

在调用 next() 或 findNext() 之后,value() 等同于 peekPrevious().value(). 在调用 previous() 或 findPrevious() 之后,value() 等同于 peekNext().value().

另请参阅 key().

const Key &QMultiMapIterator::key() const

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

在调用 next() 或 findNext() 之后,key() 等同于 peekPrevious().key(). 在调用 previous() 或 findPrevious() 之后,key() 等同于 peekNext().key().

另请参阅 value().

bool QMultiMapIterator::findNext(const T &value)

从当前迭代器位置开始向前搜索 value。如果找到了具有值 value 的(键,值)对,则返回 true;否则返回 false。

调用后,如果找到了 value,迭代器将位于匹配项之后;否则,迭代器位于容器末尾。

另请参阅 findPrevious().

bool QMultiMapIterator::findPrevious(const T &value)

从当前迭代器位置开始向后搜索 value。如果找到一个与值 value 相匹配的(键,值)对,则返回 true;否则返回 false。

调用后,如果找到了 value,迭代器将位于匹配项之前;否则,迭代器位于容器开头。

另请参阅 findNext().

© 2024 The Qt Company Ltd. 本文件包含的文档贡献归各自所有者享有版权。提供的文档是根据自由软件基金会发布的GNU自由文档许可版本1.3的条款进行许可的。GNU自由文档许可。Qt及其相关标志是The Qt Company Ltd.在芬兰和其他世界国家的商标。所有其他商标归各自所有者所有。