QFutureIterator 类

template <typename T> class QFutureIterator

QFutureIterator 类提供了类似于 Java 风格的常量迭代器,用于 QFuture更多...

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

注意: 本类中所有函数都是 重入 的。

公共函数

QFutureIterator(const QFuture<T> &future)
boolfindNext(const T &value)
boolfindPrevious(const T &value)
boolhasNext() const
boolhasPrevious() const
const T &next()
const T &peekNext() const
const T &peekPrevious() const
const T &previous()
voidtoBack()
voidtoFront()
QFutureIterator<T> &operator=(const QFuture<T> &future)

详细描述

QFuture 提供了类似于 Java 风格的迭代器和类似 STL 风格的迭代器。与类似 STL 风格的迭代器相比,类似 Java 风格的迭代器更高级,更容易使用;然而,它们略低效。

使用迭代器的另一种选择是使用索引位置。一些 QFuture 成员函数接受一个索引作为其第一个参数,使得在无需使用迭代器的情况下可以访问结果。

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

构造函数 QFutureIterator…

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活动期间future被修改,QFutureIterator将继续遍历原始future,忽略修改后的副本。

另请参阅 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()。

© 2024 Qt 公司有限公司。此处包含的文档贡献的版权属于其各自所有者。此处提供的文档是在 Free Software Foundation 发布的 GNU 自由文档许可证第 1.3 版 的条款下提供的。Qt 及其相应的标志是芬兰和/或其他国家和地区的 The Qt 公司有限公司的商标。所有其他商标均为其各自所有者的财产。