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