QMutableSetIterator 类

模板 <typename T> class QMutableSetIterator

QMutableSetIterator 类提供了一个类似于 Java 风格的非常量迭代器,用于操作QSet。详细信息...

头文件 #include <QMutableSetIterator>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core

公共函数

QMutableSetIterator(QSet<T> &set)
boolfindNext(const T &value)
boolhasNext() const
const T &next()
const T &peekNext() const
voidremove()
voidtoBack()
voidtoFront()
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()。

在任何给定时间,一个给定的集合上只能有一个可变的迭代器是活动的。此外,在迭代器活动期间不应直接对集合进行更改(与通过迭代器进行更改相反),因为这可能会使迭代器无效,并导致不确定的行为。

另请参阅 QSetIteratorQSet::iterator

成员函数文档

QMutableSetIterator::QMutableSetIterator(QSet<T> &set)

构建一个用于遍历 set 的迭代器。迭代器被设置为在集合同一的前面(在第一个项目之前)。

另请参阅 运算符=().

QMutableSetIterator<T> &QMutableSetIterator::operator=(QSet<T> &container)

使迭代器在 set 上操作。迭代器被设置为在集合同一的前面(在第一个项目之前)。

另请参阅 toFront() 和 toBack().

void QMutableSetIterator::toFront()

将迭代器移至容器的最前面(在第一个项目之前)。

另请参阅 toBack() 和 next().

bool QMutableSetIterator::findNext(const T &value)

从当前迭代器位置开始向前搜索 value。如果找到 value,则返回 true;否则返回 false

调用后,如果找到 value,迭代器将定位在匹配项之后;否则,迭代器将定位在容器的末尾。

bool QMutableSetIterator::hasNext() const

如果迭代器前面有至少一个项目,则返回 true,即迭代器不在容器的末尾;否则返回 false

另请参阅 next().

const T &QMutableSetIterator::next()

返回下一个项目并使迭代器前进一步。

在容器的末尾迭代器的位置调用此函数将导致未定义的结果。

另请参阅 hasNext() 和 peekNext().

const T &QMutableSetIterator::peekNext() const

在不移动迭代器的情况下返回下一个项目。

在容器的末尾迭代器的位置调用此函数将导致未定义的结果。

另请参阅 hasNext() 和 next().

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

返回通过 next () 或 findNext () 跳过的最后一个项目的值。