QListIterator Class
template <typename T> class QListIteratorQListIterator クラスは、QList およびQQueue に対して、Java スタイルの const イテレータを提供します。詳細...
| ヘッダー: | #include <QListIterator> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- 継承されたメンバーを含むすべてのメンバーの一覧
- QListIteratorは、QtにおけるJavaスタイルのイテレータの一部です。
パブリック関数
| QListIterator(const QList<T> &list) | |
| 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() |
| QListIterator<T> & | operator=(const QList<T> &list) |
詳細な説明
QList には、Java スタイルのイテレータと STL スタイルのイテレータの両方が用意されています。STL スタイルのイテレータの方が効率的であるため、そちらを優先して使用すべきです。テンプレートパラメータT は、リストに格納される項目の型を指定します。
イテレータの代わりに、インデックス位置を使用することもできます。QList のメンバー関数のほとんどは、最初のパラメータとしてインデックスを受け取るため、イテレータを使用せずに項目へのアクセス、変更、削除を行うことができます。
QListIterator<T> を使用すると、QList<T>、QQueue<T>、またはQStack<T> を反復処理できます。反復処理中にリストを変更したい場合は、代わりにQMutableListIterator<T> を使用してください。
QListIterator のコンストラクタは、引数としてQList を受け取ります。生成後、イテレータはリストの先頭(最初の要素の前)に位置します。すべての要素を順次反復処理する方法は次のとおりです:
QList<float> list;
//...
QListIterator<float> i(list);
while (i.hasNext())
float f = i.next();next() 関数は、リスト内の次の要素を返し、イテレータを進めます。STL スタイルのイテレータとは異なり、Java スタイルのイテレータは要素を直接指すのではなく、要素間の位置を指します。next() の最初の呼び出しは、イテレータを 1 番目と 2 番目の要素の間の位置に進め、1 番目の要素を返します。next() の 2 番目の呼び出しは、イテレータを 2 番目と 3 番目の要素の間の位置に進め、2 番目の要素を返します。以下同様です。
要素を逆順に反復処理する方法は次のとおりです:
QListIterator<float> i(list);
i.toBack();
while (i.hasPrevious())
float f = i.previous();特定の値がリスト内に何回出現するかを確認したい場合は、ループ内でfindNext() またはfindPrevious() を使用します。
同じリストに対して複数のイテレータを使用することができます。QListIteratorがアクティブな状態でリストが変更された場合、QListIteratorは変更されたコピーを無視し、元のリストの反復処理を継続します。
QMutableListIterator およびQList::const_iteratorも参照してください 。
メンバ関数のドキュメント
QListIterator::QListIterator(const QList<T> &list)
list を走査するためのイテレータを生成します。このイテレータは、リストの先頭(最初の要素の前)に位置するように設定されます。
operator=()も参照してください 。
bool QListIterator::findNext(const T &value)
現在のイテレータ位置から前方に向かって、value を検索します。value が見つかった場合はtrue を返し、見つからなかった場合はfalse を返します。
呼び出し後、value が見つかった場合は、イテレータは一致した項目の直後に位置付けられます。見つからなかった場合は、イテレータはコンテナの末尾に位置付けられます。
findPrevious()も参照してください 。
bool QListIterator::findPrevious(const T &value)
現在のイテレータの位置から過去に向かって、value を検索します。value が見つかった場合は `true ` を返し、見つからなかった場合は `false` を返します。
呼び出し後、value が見つかった場合は、イテレータは一致する項目の直前に位置付けられます。見つからなかった場合は、イテレータはコンテナの先頭に位置付けられます。
findNext()も参照してください 。
bool QListIterator::hasNext() const
イテレータの先頭に少なくとも1つの要素が存在する場合、つまりイテレータがコンテナの末尾にない場合は、true を返します。それ以外の場合は、false を返します。
hasPrevious() およびnext()も参照してください 。
bool QListIterator::hasPrevious() const
イテレータの先頭より後ろに少なくとも1つの要素が存在する場合、つまりイテレータがコンテナの先頭にあるわけではない場合は、true を返します。それ以外の場合は、false を返します。
hasNext() およびprevious()も参照してください 。
const T &QListIterator::next()
次の要素を返し、イテレータを1つ分進めます。
コンテナの末尾にあるイテレータに対してこの関数を呼び出すと、未定義の結果となります。
hasNext()、peekNext()、およびprevious()も参照してください 。
const T &QListIterator::peekNext() const
イテレータを移動させずに、次の要素を返します。
コンテナの末尾にあるイテレータに対してこの関数を呼び出すと、未定義の結果となります。
hasNext()、next()、およびpeekPrevious()も参照してください 。
const T &QListIterator::peekPrevious() const
イテレータを移動させることなく、直前の要素を返します。
コンテナの先頭にあるイテレータに対してこの関数を呼び出すと、未定義の結果となります。
hasPrevious()、previous()、およびpeekNext()も参照してください 。
const T &QListIterator::previous()
前の要素を返し、イテレータを1つ前の位置に移動します。
コンテナの先頭にあるイテレータに対してこの関数を呼び出すと、未定義の結果となります。
hasPrevious()、peekPrevious()、およびnext()も参照してください 。
void QListIterator::toBack()
イテレータをコンテナの末尾(最後の要素の直後)に移動します。
toFront() およびprevious()も参照してください 。
void QListIterator::toFront()
イテレータをコンテナの先頭(最初の要素の前)に移動します。
QListIterator<T> &QListIterator::operator=(const QList<T> &list)
イテレータが `list` 上で動作するようにします。イテレータはリストの先頭(最初の要素の前)に位置するように設定されます。
© 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.