QFutureIterator 类
template <typename T> class QFutureIteratorQFutureIterator 类提供了类似于 Java 风格的常量迭代器,用于 QFuture。 更多...
头文件 | #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 风格的迭代器。与类似 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_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 上操作。迭代器被设置为在结果列表的开头(第一个结果之前)。
© 2024 Qt 公司有限公司。此处包含的文档贡献的版权属于其各自所有者。此处提供的文档是在 Free Software Foundation 发布的 GNU 自由文档许可证第 1.3 版 的条款下提供的。Qt 及其相应的标志是芬兰和/或其他国家和地区的 The Qt 公司有限公司的商标。所有其他商标均为其各自所有者的财产。