QMutableHashIterator 类
template <typename Key, typename T> class QMutableHashIteratorQMutableHashIterator 类提供了一种 Java 风格的非常量迭代器,用于对 QHash 和 QMultiHash 进行迭代。了解更多...
头文件 | #include <QMutableHashIterator> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
公共函数
QMutableHashIterator(QHash<Key, T> &hash) | |
bool | findNext(const T &value) |
bool | hasNext() const |
const Key & | key() const |
QMutableHashIterator<Key, T>::Item | next() |
QMutableHashIterator<Key, T>::Item | peekNext() const |
void | remove() |
void | setValue(const T &value) |
void | toBack() |
void | toFront() |
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(); }
该示例删除所有键值对,其中键和值相同。
在任何时候,一个可变迭代器只能在一个给定的哈希上激活。另外,当迭代器正在激活时(不同于通过迭代器),不应直接对哈希进行更改,因为这可能会使迭代器无效并导致未定义的行为。
另请参阅 QHashIterator 和 QHash::iterator。
成员函数文档
QHash<Key, T> &QMutableHashIterator::QMutableHashIterator(QHash<Key, T> &hash)
构造一个用于遍历 哈希 的迭代器。迭代器被设置为在哈希的开始处(在第一个项目之前)。
另请参阅 operator=。
QMutableHashIterator<Key, T> &QMutableHashIterator::operator=(QHash<Key, T> &container)
使迭代器对 哈希 进行操作。迭代器被设置为在哈希的开始处(在第一个项目之前)。
void QMutableHashIterator::toFront()
将迭代器移至容器的开头(在第一个项目之前)。
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() 以获取值。
在容器的末尾位置调用此函数将导致未定义的结果。
QMutableHashIterator<Key, T>::Item QMutableHashIterator::peekNext() const
返回对下一个项的引用而不移动迭代器。
在返回值上调用 key() 以获取项的键,并调用 value() 以获取值。
在容器的末尾位置调用此函数将导致未定义的结果。
void QMutableHashIterator::remove()
删除通过遍历函数(next(),findNext())跳过的最后一项。
另请参阅 setValue().
void QMutableHashIterator::setValue(const T &value)
用 value 替换通过遍历函数(next(),findNext())跳过的最后一项的值。
另请参阅 key(),value() 和 remove().
const T &QMutableHashIterator::value() const
© 2024 Qt 公司。本文档贡献的内容属于其各自所有者的版权。本处提供的文档是根据由自由软件基金会发布的 GNU 自由文档许可证版本 1.3 许可的。Qt 和相应的商标是芬兰的 Qt 公司及其在世界各地的商标。所有其他商标均为其所有者的财产。