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() の最初の呼び出しは、イテレータを 1 番目と 2 番目の結果の間の位置に進め、1 番目の結果を返します。2 回目のnext() の呼び出しは、イテレータを 2 番目と 3 番目の結果の間の位置に進め、2 番目の結果を返します。以下同様です。
要素を逆順に反復処理する方法は次のとおりです:
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
イテレータの先頭に少なくとも1つの結果が存在する場合(つまり、イテレータが結果リストの末尾にない場合)、true を返します。それ以外の場合は false を返します。
hasPrevious() およびnext()も参照してください 。
bool QFutureIterator::hasPrevious() const
イテレータの先頭に少なくとも1つの結果が存在する場合(つまり、イテレータが結果リストの先頭ではない場合)、true を返します。それ以外の場合はfalseを返します。
hasNext() およびprevious()も参照してください 。
const T &QFutureIterator::next()
次の結果を返し、イテレータを1つ分進めます。
結果リストの末尾にあるイテレータに対してこの関数を呼び出すと、未定義の結果が生じます。
hasNext()、peekNext()、およびprevious()も参照してください 。
const T &QFutureIterator::peekNext() const
イテレータを移動させることなく、次の結果を返します。
結果リストの末尾にあるイテレータに対してこの関数を呼び出すと、予期しない結果が生じる可能性があります。
hasNext()、next()、およびpeekPrevious()も参照してください 。
const T &QFutureIterator::peekPrevious() const
イテレータを移動させることなく、直前の結果を返します。
結果リストの先頭にあるイテレータに対してこの関数を呼び出すと、定義されていない結果が生じます。
hasPrevious()、previous()、およびpeekNext()も参照してください 。
const T &QFutureIterator::previous()
前の結果を返し、イテレータを1つ前の位置に移動させます。
結果リストの先頭にあるイテレータに対してこの関数を呼び出すと、未定義の結果が生じます。
hasPrevious()、peekPrevious()、およびnext()も参照してください 。
void QFutureIterator::toBack()
イテレータを結果リストの最後(最後の結果の直後)に移動します。
toFront() およびprevious()も参照してください 。
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.