QMutableSetIterator 类
模板 <typename T> class QMutableSetIteratorQMutableSetIterator 类提供了一个类似于 Java 风格的非常量迭代器,用于操作QSet。详细信息...
头文件 | #include <QMutableSetIterator> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
公共函数
QMutableSetIterator(QSet<T> &set) | |
bool | findNext(const T &value) |
bool | hasNext() const |
const T & | next() |
const T & | peekNext() const |
void | remove() |
void | toBack() |
void | toFront() |
const T & | value() const |
QMutableSetIterator<T> & | operator=(QSet<T> &container) |
详细描述
QSet 具有类似 Java 风格迭代器 和 STL 风格迭代器 的功能。STL 风格迭代器效率更高,应优先使用。
QMutableSetIterator<T> 允许您迭代QSet<T>并同时在迭代的过程中从集合中删除项目。如果您不想修改集合(或使用常量QSet),则可使用略快的 QSetIterator<T>。
QMutableSetIterator 构造函数接受一个QSet作为参数。在构造之后,迭代器位于集合的起始位置(在第一个项目之前)。以下是按照顺序迭代所有元素的示例:
QSet<float> set; ... QMutableSetIterator<float> i(set); while (i.hasNext()) float f = i.next();
next() 函数返回集合中的下一个项目并推进迭代器。与 STL 风格迭代器不同,Java 风格迭代器指向项目之间的位置,而不是直接指向项目。对 next() 的第一次调用会将迭代器推进到第一个和第二个项目之间,并返回第一个项目;第二次调用将迭代器推进到第二个和第三个项目之间,并返回第二个项目;依此类推。
如果您想在迭代集合的同时删除项目,请使用 remove()。
在任何给定时间,一个给定的集合上只能有一个可变的迭代器是活动的。此外,在迭代器活动期间不应直接对集合进行更改(与通过迭代器进行更改相反),因为这可能会使迭代器无效,并导致不确定的行为。
另请参阅 QSetIterator 和 QSet::iterator。
成员函数文档
QMutableSetIterator::QMutableSetIterator(QSet<T> &set)
构建一个用于遍历 set 的迭代器。迭代器被设置为在集合同一的前面(在第一个项目之前)。
另请参阅 运算符=().
QMutableSetIterator<T> &QMutableSetIterator::operator=(QSet<T> &container)
使迭代器在 set 上操作。迭代器被设置为在集合同一的前面(在第一个项目之前)。
void QMutableSetIterator::toFront()
将迭代器移至容器的最前面(在第一个项目之前)。
bool QMutableSetIterator::findNext(const T &value)
从当前迭代器位置开始向前搜索 value。如果找到 value,则返回 true
;否则返回 false
。
调用后,如果找到 value,迭代器将定位在匹配项之后;否则,迭代器将定位在容器的末尾。
bool QMutableSetIterator::hasNext() const
如果迭代器前面有至少一个项目,则返回 true
,即迭代器不在容器的末尾;否则返回 false
。
另请参阅 next().
const T &QMutableSetIterator::next()
返回下一个项目并使迭代器前进一步。
在容器的末尾迭代器的位置调用此函数将导致未定义的结果。
const T &QMutableSetIterator::peekNext() const
在不移动迭代器的情况下返回下一个项目。
在容器的末尾迭代器的位置调用此函数将导致未定义的结果。
void QMutableSetIterator::remove()
移除通过遍历函数(next(), findNext)之一跳过的最后项目。
示例
QMutableSetIterator<int> i(set); while (i.hasNext()) { int val = i.next(); if (val < -32768 || val > 32767) i.remove(); }
另请参阅 value().
void QMutableSetIterator::toBack()
将迭代器移至容器的末尾(在最后一个项目之后)。
另请参阅 toFront().
const T &QMutableSetIterator::value() const