QMutableHashIterator 类

template <typename Key, typename T> class QMutableHashIterator

QMutableHashIterator 类提供了一种 Java 风格的非常量迭代器,用于对 QHashQMultiHash 进行迭代。了解更多...

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

公共函数

QMutableHashIterator(QHash<Key, T> &hash)
boolfindNext(const T &value)
boolhasNext() const
const Key &key() const
QMutableHashIterator<Key, T>::Itemnext()
QMutableHashIterator<Key, T>::ItempeekNext() const
voidremove()
voidsetValue(const T &value)
voidtoBack()
voidtoFront()
const T &value() const
T &value()
QMutableHashIterator<Key, T> &operator=(QHash<Key, T> &container)

详细描述

QHash 包含 Java 风格迭代器STL 风格迭代器。STL 风格迭代器更高效,应优先考虑。

QMutableHashIterator<Key, T> 允许您迭代遍历 QHash 并修改其内容。如果您不希望修改哈希表(或者有一个常量 QHash),请改用略快一些的 QHashIterator

QMutableHashIterator 构造函数接受一个 QHash 作为参数。构造完成后,迭代器位于哈希表的开始处(在第一个条目前)。以下是如何顺序迭代所有元素的示例

QHash<int, QWidget *> hash;
...
QMutableHashIterator<QString, QWidget *> i(hash);
while (i.hasNext()) {
    i.next();
    qDebug() << i.key() << ": " << i.value();
}

next() 函数返回哈希表中的下一个条目并移动迭代器。 key() 和 value() 函数返回跳过的上一个条目的键和值。

与 STL-style 迭代器不同,Java-style 迭代器指向的是项目之间而不是直接指向项。第一次调用 next() 将迭代器移动到第一个和第二个项目之间,并返回第一个项目;第二次调用 next() 将迭代器移动到第二个和第三个项目之间;依此类推。

如果要以循环的方式查找特定值的所有出现,请使用 findNext()。例如

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

如果您在遍历哈希时删除项目,请使用 remove()。如果想要修改一个项的值,请使用 setValue()()。

示例

QMutableHashIterator<QString, QString> i(hash);
while (i.hasNext()) {
    i.next();
    if (i.key() == i.value())
        i.remove();
}

该示例删除所有键值对,其中键和值相同。

在任何时候,一个可变迭代器只能在一个给定的哈希上激活。另外,当迭代器正在激活时(不同于通过迭代器),不应直接对哈希进行更改,因为这可能会使迭代器无效并导致未定义的行为。

另请参阅 QHashIteratorQHash::iterator

成员函数文档

QHash<Key, T> &QMutableHashIterator::QMutableHashIterator(QHash<Key, T> &hash)

构造一个用于遍历 哈希 的迭代器。迭代器被设置为在哈希的开始处(在第一个项目之前)。

另请参阅 operator=

QMutableHashIterator<Key, T> &QMutableHashIterator::operator=(QHash<Key, T> &container)

使迭代器对 哈希 进行操作。迭代器被设置为在哈希的开始处(在第一个项目之前)。

另请参阅 toFront() 和 toBack

void QMutableHashIterator::toFront()

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

另请参阅 toBack() 和 next

void QMutableHashIterator::toBack()

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

另请参阅 toFront

bool QMutableHashIterator::hasNext() const

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

另请参阅 next

T &QMutableHashIterator::value()

这是一个重载函数。

返回使用一个遍历函数(next())跳跃到最后一个项目时的值的非const引用。

const Key &QMutableHashIterator::key() const

返回使用遍历函数(next(), findNext)跳跃到最后一个项的键。

另请参阅 value().

bool QMutableHashIterator::findNext(const T &value)

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

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

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

返回下一个项,并将迭代器前移一位。

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

在容器的末尾位置调用此函数将导致未定义的结果。

另请参阅 hasNext() 和 peekNext().

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

返回对下一个项的引用而不移动迭代器。

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

在容器的末尾位置调用此函数将导致未定义的结果。

另请参阅 hasNext() 和 next().

void QMutableHashIterator::remove()

删除通过遍历函数(next(),findNext())跳过的最后一项。

另请参阅 setValue().

void QMutableHashIterator::setValue(const T &value)

value 替换通过遍历函数(next(),findNext())跳过的最后一项的值。

遍历函数是 next() 和 findNext()。

另请参阅 key(),value() 和 remove().

const T &QMutableHashIterator::value() const

返回通过遍历函数(next(),findNext())跳过的最后一项的值。

另请参阅 key() 和 setValue().

© 2024 Qt 公司。本文档贡献的内容属于其各自所有者的版权。本处提供的文档是根据由自由软件基金会发布的 GNU 自由文档许可证版本 1.3 许可的。Qt 和相应的商标是芬兰的 Qt 公司及其在世界各地的商标。所有其他商标均为其所有者的财产。