QHashIterator 类
template <typename Key, typename T> class QHashIteratorQHashIterator 类提供了一个适用于 QHash 和 QMultiHash 的 Java 风格常量迭代器。更多...
头文件 | #include <QHashIterator> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
公共函数
QHashIterator(const QHash<Key, T> &hash) | |
bool | findNext(const T &value) |
bool | hasNext() const |
const Key & | key() const |
QHashIterator<Key, T>::Item | next() |
QHashIterator<Key, T>::Item | peekNext() const |
void | toBack() |
void | toFront() |
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将继续遍历原始哈希,忽略修改后的副本。
另请参阅QMutableHashIterator和QHash::const_iterator。
成员函数文档
QHashIterator::QHashIterator(const QHash<Key, T> &hash)
构建用于遍历hash的迭代器。迭代器设置为哈希的开头(在第一个项目之前)。
另请参阅operator=()。
QHashIterator<Key, T> &QHashIterator::operator=(const QHash<Key, T> &container)
使迭代器在hash上操作。迭代器被设置为哈希的开头(在第一个项目之前)。
void QHashIterator::toFront()
将迭代器移动到容器的前面(在第一个项目之前)。
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()以获取值。
在容器的末尾迭代器上调用此函数会导致未定义的结果。
QHashIterator<Key, T>::Item QHashIterator::peekNext() const
返回下一个元素而不移动迭代器。
对返回值调用key()以获取项目的键,调用value()以获取值。
在容器的末尾迭代器上调用此函数会导致未定义的结果。
const T &QHashIterator::value() const
返回使用遍历函数(next(),findNext())跳过的最后一个元素的值。
另请参阅 key()。
© 2024 Qt公司。此处包含的文档贡献为各自所有者的版权。此处提供的文档是根据自由软件基金会的出版物《GNU自由文档许可协议》的条款许可的,版本为1.3。Qt及其相关徽标为芬兰以及世界各地的Qt公司的商标。所有其他商标均为各自所有者的财产。