QMultiMapIterator 类
template <typename Key, typename T> class QMultiMapIteratorQMultiMapIterator 类提供了对 QMultiMap 的 Java 风格常量迭代器。QMultiMap 既有 Java 风格迭代器,也有 STL 风格迭代器。STL 风格迭代器更高效,应优先使用。有关更多信息,请参阅 这里。
头文件 | #include <QMultiMapIterator> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
公共函数
QMultiMapIterator(const QMultiMap<Key, T> &map) | |
bool | findNext(const T &value) |
bool | findPrevious(const T &value) |
bool | hasNext() const |
bool | hasPrevious() const |
const Key & | key() const |
QMultiMapIterator<Key, T>::Item | next() |
QMultiMapIterator<Key, T>::Item | peekPrevious() const |
QMultiMapIterator<Key, T>::Item | previous() |
void | toBack() |
void | toFront() |
const T & | value() const |
QMultiMapIterator<Key, T> & | operator=(const QMultiMap<Key, T> &container) |
详细描述
QMultiMapIterator<Key, T> 允许您迭代遍历一个 QMultiMap。如果您在迭代过程中要修改映射,请使用 QMutableMultiMapIterator。
QMultiMapIterator 的构造函数需要一个 QMultiMap 参数。构造之后,迭代器位于地图的起始位置(在第一个项目之前)。以下是按顺序遍历所有元素的方法:
QMultiMap<int, QWidget *> multimap; ... QMultiMapIterator<int, QWidget *> i(multimap); while (i.hasNext()) { i.next(); qDebug() << i.key() << ": " << i.value(); }
next() 函数返回地图中的下一个项目并移动迭代器。函数 key() 和 value() 返回上一次跳过的最后一个项目的键和值。
与 STL 风格的差异,Java 风格的迭代器在项目之间而不是直接在项目上指向。第一次调用 next() 将迭代器 advancing 到第一个和第二个项目之间的位置并返回第一个项目;第二次调用 next() 将迭代器 advancing 到第二个和第三个项目之间的位置;以此类推。
以下是按逆序遍历元素的方法:
QMultiMapIterator<int, QWidget *> i(multimap); i.toBack(); while (i.hasPrevious()) { i.previous(); qDebug() << i.key() << ": " << i.value(); }
如果要在循环中使用查找特定值的所有发生,请使用循环中的 findNext() 或 findPrevious()。例如:
QMultiMapIterator<int, QWidget *> i(multimap); while (i.findNext(widget)) { qDebug() << "Found widget " << widget << " under key " << i.key(); }
可以在同一张地图上使用多个迭代器。如果在 QMultiMapIterator 处于活动状态时修改了地图,QMultiMapIterator 将继续迭代原始地图,忽略已修改的副本。
成员函数文档
QMultiMapIterator::QMultiMapIterator(const QMultiMap<Key, T> &map)
构造一个迭代器以便遍历 map。迭代器将被设置为地图的开始位置(在第一个项目之前)。
另见 操作符=。
QMultiMapIterator<Key, T> &QMultiMapIterator::operator=(const QMultiMap<Key, T> &container)
使迭代器在 map 上操作。迭代器将被设置为地图的开始位置(在第一个项目之前)。
void QMultiMapIterator::toFront()
将迭代器移动到容器的开头(在第一个项目之前)。
void QMultiMapIterator::toBack()
将迭代器移动到容器的末尾(在最后一个项目之后)。
bool QMultiMapIterator::hasNext() const
如果迭代器前方至少有一个项目,则返回 true
,即迭代器不在容器的末尾;否则返回 false
。
另见 hasPrevious() 和 next。
QMultiMapIterator<Key, T>::Item QMultiMapIterator::next()
返回下一个项目并将迭代器向前推进一个位置。
在返回值上调用 key() 来获取项目的键,并调用 value() 来获取值。
在容器的末尾的迭代器上调用此函数将导致不确定的结果。
另见 hasNext(),peekNext() 和 previous。
bool QMultiMapIterator::hasPrevious() const
如果迭代器后方至少有一个项目,则返回 true
,即迭代器不在容器的开头;否则返回 false
。
QMultiMapIterator<Key, T>::Item QMultiMapIterator::previous()
返回上一个项目并将迭代器向后移动一个位置。
在返回值上调用 key() 来获取项目的键,并调用 value() 来获取值。
在容器的开头位置的迭代器上调用此函数将导致不确定的结果。
另见 hasPrevious(),peekPrevious() 和 next。
QMultiMapIterator<Key, T>::Item QMultiMapIterator::peekPrevious() const
返回上一个元素而不移动迭代器。
在返回值上调用 key() 来获取项目的键,并调用 value() 来获取值。
在容器的开头位置的迭代器上调用此函数将导致不确定的结果。
另请参阅 hasPrevious(),previous(),以及 peekNext()。
const T &QMultiMapIterator::value() const
返回使用遍历函数(next(),previous(),findNext(),findPrevious)跳过的最后一个元素的值。
在调用 next() 或 findNext() 之后,value() 等同于 peekPrevious().value(). 在调用 previous() 或 findPrevious() 之后,value() 等同于 peekNext().value().
另请参阅 key().
const Key &QMultiMapIterator::key() const
返回使用遍历函数(next(),previous(),findNext(),findPrevious)跳过的最后一个元素的键。
在调用 next() 或 findNext() 之后,key() 等同于 peekPrevious().key(). 在调用 previous() 或 findPrevious() 之后,key() 等同于 peekNext().key().
另请参阅 value().
bool QMultiMapIterator::findNext(const T &value)
从当前迭代器位置开始向前搜索 value。如果找到了具有值 value 的(键,值)对,则返回 true;否则返回 false。
调用后,如果找到了 value,迭代器将位于匹配项之后;否则,迭代器位于容器末尾。
另请参阅 findPrevious().
bool QMultiMapIterator::findPrevious(const T &value)
从当前迭代器位置开始向后搜索 value。如果找到一个与值 value 相匹配的(键,值)对,则返回 true;否则返回 false。
调用后,如果找到了 value,迭代器将位于匹配项之前;否则,迭代器位于容器开头。
另请参阅 findNext().
© 2024 The Qt Company Ltd. 本文件包含的文档贡献归各自所有者享有版权。提供的文档是根据自由软件基金会发布的GNU自由文档许可版本1.3的条款进行许可的。GNU自由文档许可。Qt及其相关标志是The Qt Company Ltd.在芬兰和其他世界国家的商标。所有其他商标归各自所有者所有。