QFutureIterator Class
template <typename T> class QFutureIteratorQFutureIterator 类为 `QFuture` 提供了一个 Java 风格的 const 迭代器。更多内容...
| 头文件: | #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) |
详细说明
QFutureIterator<T> 是一个模板类,其中T 指定了正在遍历的QFuture 的结果类型。
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()。
同一个未来对象上可以使用多个迭代器。如果在 QFutureIterator 处于活动状态时修改了该未来对象,QFutureIterator 将继续遍历原始的未来对象,忽略被修改的副本。
另请参阅 QFuture::const_iterator 和QFuture 。
成员函数文档
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。
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()
将迭代器移动到结果列表的末尾(最后一个结果之后)。
void QFutureIterator::toFront()
将迭代器移至结果列表的开头(位于第一个结果之前)。
QFutureIterator<T> &QFutureIterator::operator=(const QFuture<T> &future)
使迭代器在future 上运行。迭代器被设置为位于结果列表的最前端(第一个结果之前)。
© 2026 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.