QMapIterator 类

template <typename Key, typename T> class QMapIterator

QMapIterator 类提供了对 QMap 的 Java 风格常量迭代器。更多...

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

公共函数

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

详细描述

QMap 既有 Java 风格迭代器 也有 STL 风格迭代器。STL 风格迭代器更有效,建议优先使用。

QMapIterator<Key, T> 允许您遍历一个 QMap。如果在遍历时需要修改映射,请使用 QMutableMapIterator

QMapIterator 构造函数需要一个 QMap 作为参数。构造完成后,迭代器位于映射的开头(在第一个项目之前)。以下是按顺序遍历所有元素的方法

QMap<int, QWidget *> map;
...
QMapIterator<int, QWidget *> i(map);
while (i.hasNext()) {
    i.next();
    qDebug() << i.key() << ": " << i.value();
}

next() 函数返回映射中的下一个项目并推进迭代器。key() 和 value() 函数返回最后跳过的项目的键和值。

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

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

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

如果您想查找特定值的全部出现,请在循环中使用findNext()或findPrevious()。例如

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

可以在同一映射上使用多个迭代器。如果在QMapIterator活动期间修改映射,则QMapIterator将继续遍历原始映射,忽略修改的副本。

另请参阅QMutableMapIteratorQMap::const_iterator

成员函数文档

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

为遍历map构造迭代器。迭代器被设置为在映射的前端(在第一个项目之前)。

另请参阅operator=()。

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

使迭代器在map上操作。迭代器被设置为在映射的前端(在第一个项目之前)。

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

void QMapIterator::toFront()

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

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

void QMapIterator::toBack()

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

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

bool QMapIterator::hasNext() const

如果迭代器前方至少有一个项目,则返回true,即迭代器位于容器的后端;否则返回false

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

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

返回下一项目并使迭代器前移一个位置。

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

在容器末尾的迭代器上调用此函数会产生未定义的结果。

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

QMapIterator<Key, T>::Item QMapIterator::peekNext() const

返回下一项目而不移动迭代器。

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

在容器末尾的迭代器上调用此函数会产生未定义的结果。

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

bool QMapIterator::hasPrevious() const

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

参见: hasNext() 和 previous().

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

返回前一个项目并将迭代器回退一个位置。

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

在容器的开头位置调用此函数会导致未定义的结果。

参见: hasPrevious(),peekPrevious() 和 next().

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

返回前一个项目而不移动迭代器。

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

在容器的开头位置调用此函数会导致未定义的结果。

参见: hasPrevious(),previous() 和 peekNext().

const T &QMapIterator::value() const

返回使用寻遍函数(next(),previous(),findNext(),findPrevious)跳过最后一个项目的值。

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

参见: key().

const Key &QMapIterator::key() const

返回使用寻遍函数(next(),previous(),findNext(),findPrevious)跳过最后一个项目的键。

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

参见: value().

bool QMapIterator::findNext(const T &value)

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

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

参见: findPrevious().

bool QMapIterator::findPrevious(const T &value)

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

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

另请参阅findNext

© 2024 Qt公司有限公司。此处包含的文档贡献是各自所有者的版权。此处提供的文档根据自由软件基金会发布的GNU自由文档许可证版本1.3的条款进行许可。Qt及其相关商标是芬兰以及全球其他国家的Qt公司有限责任公司的商标。所有其他商标均为各自所有者的财产。