QFutureIterator Class

template <typename T> class QFutureIterator

QFutureIterator 类为QFuture 提供了 Java 风格的常量迭代器。更多

头文件: #include <QFutureIterator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

注意:该类中的所有函数都是可重入的

公共函数

QFutureIterator(const QFuture<T> &future)
bool findNext(const T &value)
bool findPrevious(const T &value)
bool hasNext() const
bool hasPrevious() const
const T &next()
const T &peekNext() const
const T &peekPrevious() const
const T &previous()
void toBack()
void toFront()
QFutureIterator<T> &operator=(const QFuture<T> &future)

详细说明

QFuture 既有Java 风格的迭代器,也有STL 风格的迭代器。Java 样式的迭代器比 STL 样式的迭代器更高级、更易用;但另一方面,它们的效率略低。

使用迭代器的另一种方法是使用索引位置。一些QFuture 成员函数将索引作为第一个参数,这样就可以不使用迭代器访问结果。

QFutureIterator<T> 允许您遍历QFuture<T>。请注意,QFuture 没有可变迭代器(与其他 Java 风格的迭代器不同)。

QFutureIterator 构造函数的参数是QFuture 。构造完成后,迭代器位于结果列表的最开始(即第一个结果之前)。下面是按顺序遍历所有结果的方法:

QFuture<QString> future;
...
QFutureIterator<QString> i(future);
while (i.hasNext())
    QString s = i.next();

next() 函数从未来返回下一个结果(如有必要,可等待该结果可用),并推进迭代器。与 STL 风格的迭代器不同,Java 风格的迭代器指向结果之间,而不是直接指向结果。第一次调用next() 会将迭代器前进到第一个和第二个结果之间的位置,并返回第一个结果;第二次调用next() 会将迭代器前进到第二个和第三个结果之间的位置,并返回第二个结果;以此类推。

下面是以相反顺序遍历元素的方法:

QFutureIterator<QString> i(future);
i.toBack();
while (i.hasPrevious())
    QString s = i.previous();

如果要查找特定值的所有出现次数,请在循环中使用findNext() 或findPrevious() 。

同一个 future 可以使用多个迭代器。如果在 QFutureIterator 处于活动状态时未来被修改,QFutureIterator 将继续迭代原始未来,而忽略修改后的副本。

另请参阅 QFuture::const_iteratorQFuture

成员函数文档

QFutureIterator::QFutureIterator(const QFuture<T> &future)

构造一个遍历future 的迭代器。迭代器被设置在结果列表的前端(第一个结果之前)。

另请参阅 operator=() 。

bool QFutureIterator::findNext(const T &value)

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

调用后,如果找到value ,迭代器将被置于匹配结果之后;否则,迭代器将被置于结果列表的后面。

另请参阅 findPrevious() 。

bool QFutureIterator::findPrevious(const T &value)

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

调用后,如果找到value ,则将迭代器放在匹配结果的前面;否则,将迭代器放在结果列表的前面。

另请参阅 findNext() 。

bool QFutureIterator::hasNext() const

如果迭代器前面至少有一个结果,例如迭代器在结果列表的后面,则返回true ;否则返回 false。

另请参见 hasPrevious() 和next()。

bool QFutureIterator::hasPrevious() const

如果迭代器前面至少有一个结果,例如迭代器在结果列表的前面,则返回true ;否则返回 false。

另请参见 hasNext() 和previous()。

const T &QFutureIterator::next()

返回下一个结果,并将迭代器向前推进一个位置。

对位于结果列表后面的迭代器调用此函数会导致未定义的结果。

另请参阅 hasNext()、peekNext() 和previous()。

const T &QFutureIterator::peekNext() const

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

对位于结果列表后部的迭代器调用此函数会导致未定义的结果。

另请参阅 hasNext()、next() 和peekPrevious()。

const T &QFutureIterator::peekPrevious() const

在不移动迭代器的情况下返回前一个结果。

对位于结果列表前部的迭代器调用此函数会导致未定义的结果。

另请参阅 hasPrevious()、previous() 和peekNext()。

const T &QFutureIterator::previous()

返回前一个结果,并将迭代器后移一个位置。

对位于结果列表前部的迭代器调用此函数会导致未定义的结果。

另请参阅 hasPrevious()、peekPrevious() 和next()。

void QFutureIterator::toBack()

将迭代器移到结果列表的后面(最后一个结果之后)。

另请参阅 toFront() 和previous()。

void QFutureIterator::toFront()

将迭代器移到结果列表的前面(第一个结果之前)。

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

QFutureIterator<T> &QFutureIterator::operator=(const QFuture<T> &future)

使迭代器在future 上运行。迭代器被设置在结果列表的前面(第一个结果之前)。

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

© 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.