QMutableLinkedListIterator Class
template <typename T> class QMutableLinkedListIteratorQMutableLinkedListIterator クラスは、QLinkedList に対して Java スタイルの非 const イテレータを提供します。詳細...
| ヘッダー: | #include <QMutableLinkedListIterator> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core5Compat) target_link_libraries(mytarget PRIVATE Qt6::Core5Compat) |
| qmake: | QT += core5compat |
パブリック関数
| QMutableLinkedListIterator(QLinkedList<T> &list) | |
| bool | findNext(const T &value) |
| bool | findPrevious(const T &value) |
| bool | hasNext() const |
| bool | hasPrevious() const |
| void | insert(const T &value) |
| T & | next() |
| T & | peekNext() const |
| T & | peekPrevious() const |
| T & | previous() |
| void | remove() |
| void | setValue(const T &value) const |
| void | toBack() |
| void | toFront() |
| const T & | value() const |
| T & | value() |
| QMutableLinkedListIterator<T> & | operator=(QLinkedList<T> &list) |
詳細な説明
QLinkedList Java スタイルのイテレータと STL スタイルのイテレータの両方を備えています。Java スタイルのイテレータは、STL スタイルのイテレータよりも高レベルで使いやすくなっていますが、その反面、効率は若干劣ります。
`QMutableLinkedListIterator<T>` を使用すると、`QLinkedList<T>` を反復処理し、リストを変更することができます。ここで、T は要素の型です。リストを変更したくない場合(または `constQLinkedList` を使用している場合)は、代わりに、わずかに高速な `QLinkedListIterator<T>` を使用してください。
QMutableLinkedListIterator のコンストラクタは、引数としてQLinkedList を受け取ります。生成後、イテレータはリストの先頭(最初の要素の前)に位置します。すべての要素を順次反復処理する方法は次のとおりです:
QLinkedList<float>list;
...
QMutableLinkedListIterator<float>i(list);
while(i.hasNext())
qDebug() << i.next();next() 関数は、リスト内の次の項目を返し、イテレータを進めます。STL スタイルのイテレータとは異なり、Java スタイルのイテレータは項目を直接指すのではなく、項目間の位置を指します。next() の最初の呼び出しでは、イテレータが 1 番目と 2 番目の要素の間の位置に進み、1 番目の要素が返されます。next() の 2 回目の呼び出しでは、イテレータが 2 番目と 3 番目の要素の間の位置に進み、2 番目の要素が返されます。以下同様です。

要素を逆順に反復処理する方法は次のとおりです:
QMutableLinkedListIterator<float>i(list);
i.toBack();
while(i.hasPrevious())
qDebug() << i.previous();特定の値がリスト内に何回出現するかを確認したい場合は、ループ内で `findNext()` または `findPrevious()` を使用してください。
リストを反復処理しながら要素を削除したい場合は、remove() を使用します。要素の値を変更したい場合は、setValue() を使用します。リストに新しい要素を挿入したい場合は、insert() を使用します。
例:
QMutableLinkedListIterator<int> i(list);
while (i.hasNext()) {
int val = i.next();
if (val < 0) {
i.setValue(-val);
} else if (val == 0) {
i.remove();
}
}この例では、リストを走査して、負の数を絶対値に置き換え、ゼロを削除します。
特定のリストに対して、一度にアクティブにできる可変イテレータは1つだけです。さらに、イテレータがアクティブな間は(イテレータを介してではなく)リストに対して直接変更を行ってはなりません。そうすると、イテレータが無効になり、未定義の挙動を引き起こす可能性があるためです。
関連項目: QLinkedListIterator およびQLinkedList::iterator 。
メンバ関数のドキュメント
QMutableLinkedListIterator::QMutableLinkedListIterator(QLinkedList<T> &list)
list を走査するためのイテレータを作成します。このイテレータは、リストの先頭(最初の要素の前)に位置するように設定されます。
operator=()も参照してください 。
bool QMutableLinkedListIterator::findNext(const T &value)
現在のイテレータ位置から前方に向かって `value ` を検索します。`value ` が見つかった場合は `true ` を返し、見つからなかった場合は `false` を返します。
呼び出し後、value が見つかった場合は、イテレータは一致した項目の直後に位置付けられます。見つからなかった場合は、イテレータはコンテナの末尾に位置付けられます。
findPrevious()も参照してください 。
bool QMutableLinkedListIterator::findPrevious(const T &value)
現在のイテレータの位置から過去に向かって、value を検索します。value が見つかった場合は `true ` を返し、見つからなかった場合は `false` を返します。
呼び出し後、value が見つかった場合は、イテレータは一致する項目の直前に位置付けられます。見つからなかった場合は、イテレータはコンテナの先頭に位置付けられます。
findNext()も参照してください 。
bool QMutableLinkedListIterator::hasNext() const
イテレータの先方に少なくとも1つの要素が存在する場合、つまりイテレータがコンテナの末尾にない場合は、true を返します。それ以外の場合は、false を返します。
hasPrevious() およびnext()も参照してください 。
bool QMutableLinkedListIterator::hasPrevious() const
イテレータの先頭より後ろに少なくとも1つの要素が存在する場合(つまり、イテレータがコンテナの先頭ではない場合)、true を返します。それ以外の場合は、false を返します。
hasNext() およびprevious()も参照してください 。
void QMutableLinkedListIterator::insert(const T &value)
現在のイテレータの位置に `value ` を挿入します。呼び出し後、イテレータは挿入された項目の直後に位置します。
remove() およびsetValue()も参照してください 。
T &QMutableLinkedListIterator::next()
次の要素への参照を返し、イテレータを1つ分進めます。
コンテナの末尾にあるイテレータに対してこの関数を呼び出すと、未定義の結果が生じます。
hasNext()、peekNext()、およびprevious()も参照してください 。
T &QMutableLinkedListIterator::peekNext() const
イテレータの位置を移動させることなく、次の要素への参照を返します。
コンテナの末尾にあるイテレータに対してこの関数を呼び出すと、未定義の結果が生じます。
hasNext()、next()、およびpeekPrevious()も参照してください 。
T &QMutableLinkedListIterator::peekPrevious() const
イテレータを移動させることなく、前の要素への参照を返します。
コンテナの先頭にあるイテレータに対してこの関数を呼び出すと、未定義の結果となります。
hasPrevious()、previous()、およびpeekNext()も参照してください 。
T &QMutableLinkedListIterator::previous()
前の要素への参照を返し、イテレータを1つ前の位置に移動します。
コンテナの先頭にあるイテレータに対してこの関数を呼び出すと、定義されていない結果となります。
hasPrevious()、peekPrevious()、およびnext()も参照してください 。
void QMutableLinkedListIterator::remove()
トラバーサル関数(next()、previous()、findNext()、findPrevious())のいずれかを使用してスキップされた最後の項目を削除します。
例:
QMutableLinkedListIterator<int> i(list);
while (i.hasNext()) {
int val = i.next();
if (val < -32768 || val > 32767)
i.remove();
}insert() およびsetValue()も参照してください 。
void QMutableLinkedListIterator::setValue(const T &value) const
value を使用して、いずれかの探索関数によってスキップされた最後の項目の値を置き換えます。
トラバーサル関数には、next()、previous()、findNext()、findPrevious() があります。
例:
QMutableLinkedListIterator<double> i(list);
while (i.hasNext()) {
double val = i.next();
i.setValue(std::sqrt(val));
}value()、remove()、およびinsert()も参照してください 。
void QMutableLinkedListIterator::toBack()
イテレータをコンテナの末尾(最後の要素の直後)に移動します。
toFront() およびprevious()も参照してください 。
void QMutableLinkedListIterator::toFront()
イテレータをコンテナの先頭(最初の要素の前)に移動します。
const T &QMutableLinkedListIterator::value() const
トラバーサル関数(next()、previous()、findNext()、findPrevious())のいずれかを使用してスキップされた最後の項目の値を返します。
next() またはfindNext() を呼び出した後、value() はpeekPrevious() と同等になります。previous() またはfindPrevious() を呼び出した後、value() はpeekNext() と同等になります。
setValue()も参照してください 。
T &QMutableLinkedListIterator::value()
トラバーサル関数のいずれかを使用してスキップされた最後の項目の値への非const参照を返します。
これはオーバーロードされた関数です。
QMutableLinkedListIterator<T> &QMutableLinkedListIterator::operator=(QLinkedList<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.