QMutableSetIterator Class

template <typename T> class QMutableSetIterator

QMutableSetIterator 类为QSet 提供了 Java 风格的非常数迭代器。更多

Header: #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> &set)

详细说明

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() 会将迭代器前进到第一项和第二项之间的位置,并返回第一项;第二次调用next() 会将迭代器前进到第二项和第三项之间的位置,并返回第二项;以此类推。

如果想在遍历集合时删除项目,请使用remove()。

在任何时候,一个给定的集合上只能有一个可变迭代器处于活动状态。此外,当迭代器处于活动状态时(而不是通过迭代器),不应直接对集合进行更改,因为这可能会使迭代器失效并导致未定义的行为。

另请参阅 QSetIteratorQSet::iterator

成员函数文档

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

构造一个遍历set 的迭代器。迭代器被设置为位于集合的前端(第一个项目之前)。

另请参阅 operator=() 。

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

使迭代器在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() 跳转的最后一个项目的值。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.