QHashIterator 类

template <typename Key, typename T> class QHashIterator

QHashIterator 类提供了一个适用于 QHashQMultiHash 的 Java 风格常量迭代器。更多...

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

公共函数

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

详细描述

QHash 具有同时支持 Java 风格迭代器STL 风格迭代器。STL 风格迭代器更有效率,应该优先考虑。

QHashIterator<Key, T> 允许你在 QHash (或 QMultiHash) 上迭代。如果你想在你迭代时修改哈希,请使用 QMutableHashIterator

QHashIterator 构造函数接收一个 QHash 作为参数。构造之后,迭代器位于哈希的开头(在第一个元素之前)。以下是按顺序迭代所有元素的方式:

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

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

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

如果你想找到特定值的所有出现,请在一个循环中使用 findNext()。例如

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

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

另请参阅QMutableHashIteratorQHash::const_iterator

成员函数文档

QHashIterator::QHashIterator(const QHash<Key, T> &hash)

构建用于遍历hash的迭代器。迭代器设置为哈希的开头(在第一个项目之前)。

另请参阅operator=()。

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

使迭代器在hash上操作。迭代器被设置为哈希的开头(在第一个项目之前)。

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

void QHashIterator::toFront()

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

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

void QHashIterator::toBack()

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

另请参阅toFront

bool QHashIterator::hasNext() const

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

另请参阅next()。

const Key &QHashIterator::key() const

返回使用遍历函数(next(),findNext())跳过的最后一个项目的密钥。

另请参阅value

bool QHashIterator::findNext(const T &value)

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

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

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

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

对返回值调用key()以获取项目的键,调用value()以获取值。

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

另请参阅hasNext()和peekNext

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

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

对返回值调用key()以获取项目的键,调用value()以获取值。

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

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

const T &QHashIterator::value() const

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

另请参阅 key()。

© 2024 Qt公司。此处包含的文档贡献为各自所有者的版权。此处提供的文档是根据自由软件基金会的出版物《GNU自由文档许可协议》的条款许可的,版本为1.3。Qt及其相关徽标为芬兰以及世界各地的Qt公司的商标。所有其他商标均为各自所有者的财产。