このページでは

QMutableListIterator Class

template <typename T> class QMutableListIterator

QMutableListIterator クラスは、QList 、QQueue 、およびQStack に対して、Java スタイルの非定数イテレータを提供します。詳細...

ヘッダー: #include <QMutableListIterator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

パブリック関数

QMutableListIterator(QList<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()
QMutableListIterator<T> &operator=(QList<T> &list)

詳細な説明

QList には、Java スタイルのイテレータと STL スタイルのイテレータの両方が用意されています。STL スタイルのイテレータの方が効率が良いため、そちらを優先して使用すべきです。テンプレートパラメータ `T ` は、リストに格納される項目の型を指定します。

イテレータの代わりに、インデックス位置を使用することもできます。QList のメンバー関数のほとんどは、最初のパラメータとしてインデックスを受け取るため、イテレータを使用せずに項目へのアクセス、挿入、削除を行うことが可能です。

QMutableListIterator<T> を使用すると、QList<T>(またはQQueue<T>)を反復処理し、リストを変更することができます。リストを変更したくない場合(または constQList を使用している場合)は、代わりに、わずかに高速なQListIterator<T> を使用してください。

QMutableListIterator のコンストラクタは、QList を引数として受け取ります。生成後、イテレータはリストの先頭(最初の要素の前)に位置します。すべての要素を順次反復処理する方法は次のとおりです:

QList<float> list;
//...
QMutableListIterator<float> i(list);
while (i.hasNext())
    float f = i.next();

next() 関数は、リスト内の次の要素を返し、イテレータを進めます。STL スタイルのイテレータとは異なり、Java スタイルのイテレータは要素そのものを直接指すのではなく、要素間の位置を指します。next() の最初の呼び出しは、イテレータを 1 番目の要素と 2 番目の要素の間の位置に進め、1 番目の要素を返します。2 回目のnext() の呼び出しは、イテレータを 2 番目の要素と 3 番目の要素の間の位置に進め、2 番目の要素を返します。以下同様です。

項目 A、B、C、D の間のイテレータの位置

要素を逆順に反復処理する方法は次のとおりです:

QMutableListIterator<float> i(list);
i.toBack();
while (i.hasPrevious())
    float f = i.previous();

特定の値がリスト内に何回出現するかを確認したい場合は、ループ内で `findNext()` または `findPrevious()` を使用します。

リストを反復処理しながら項目を削除したい場合は、remove() を使用します。項目の値を変更したい場合は、setValue() を使用します。リストに新しい項目を挿入したい場合は、insert() を使用します。

例:

QMutableListIterator<int> i(list);
while (i.hasNext()) {
    int val = i.next();
    if (val < 0) {
        i.setValue(-val);
    } else if (val == 0) {
        i.remove();
    }
}

この例では、リストを走査して、負の数を絶対値に置き換え、ゼロを削除します。

特定のリストに対して、一度にアクティブにできる可変イテレータは1つだけです。さらに、イテレータがアクティブな間は(イテレータを介してではなく)リストに対して直接変更を行ってはいけません。そうするとイテレータが無効になり、未定義の挙動を引き起こす可能性があるためです。

関連項目: QListIterator およびQList::iterator 。

メンバ関数のドキュメント

QMutableListIterator::QMutableListIterator(QList<T> &list)

list を走査するためのイテレータを作成します。このイテレータは、リストの先頭(最初の要素の前)に位置するように設定されます。

operator=()も参照してください 。

bool QMutableListIterator::findNext(const T &value)

現在のイテレータの位置から前方に向かって「value 」を検索します。value が見つかった場合はtrue を返し、見つからなかった場合はfalse を返します。

呼び出し後、value が見つかった場合は、イテレータは一致する項目の直後に位置付けられます。見つからなかった場合は、イテレータはコンテナの末尾に位置付けられます。

findPrevious()も参照してください 。

bool QMutableListIterator::findPrevious(const T &value)

現在のイテレータの位置から過去に向かって、value を検索します。value が見つかった場合はtrue を返し、見つからなかった場合はfalseを返します。

呼び出し後、value が見つかった場合は、イテレータは一致する項目の直前に位置付けられます。見つからなかった場合は、イテレータはコンテナの先頭に位置付けられます。

findNext()も参照してください 。

bool QMutableListIterator::hasNext() const

イテレータの先方に少なくとも1つの要素が存在する場合、つまりイテレータがコンテナの末尾にない場合は、true を返します。それ以外の場合は、false を返します。

hasPrevious() およびnext()も参照してください 。

bool QMutableListIterator::hasPrevious() const

イテレータの先頭より後ろに少なくとも1つの要素が存在する場合、つまりイテレータがコンテナの先頭ではない場合は、true を返します。それ以外の場合は、false を返します。

hasNext() およびprevious()も参照してください 。

void QMutableListIterator::insert(const T &value)

現在のイテレータの位置に `value ` を挿入します。呼び出し後、イテレータは挿入された項目の直後に位置します。

remove() およびsetValue()も参照してください 。

T &QMutableListIterator::next()

次の要素への参照を返し、イテレータを1つ分進めます。

コンテナの末尾にあるイテレータに対してこの関数を呼び出すと、未定義の結果となります。

hasNext()、peekNext()、およびprevious()も参照してください 。

T &QMutableListIterator::peekNext() const

イテレータの位置を移動させることなく、次の要素への参照を返します。

コンテナの末尾にあるイテレータに対してこの関数を呼び出すと、未定義の結果となります。

hasNext()、next()、およびpeekPrevious()も参照してください 。

T &QMutableListIterator::peekPrevious() const

イテレータを移動させることなく、前の要素への参照を返します。

コンテナの先頭にあるイテレータに対してこの関数を呼び出すと、未定義の結果となります。

hasPrevious()、previous()、およびpeekNext()も参照してください 。

T &QMutableListIterator::previous()

前の要素への参照を返し、イテレータを1つ前の位置に移動します。

コンテナの先頭にあるイテレータに対してこの関数を呼び出すと、未定義の結果となります。

hasPrevious()、peekPrevious()、およびnext()も参照してください 。

void QMutableListIterator::remove()

トラバーサル関数(next()、previous()、findNext()、findPrevious())のいずれかを使用してスキップされた最後の要素を削除します。

例:

QMutableListIterator<int> i(list);
while (i.hasNext()) {
    int val = i.next();
    if (val < -32768 || val > 32767)
        i.remove();
}

insert() およびsetValue()も参照してください 。

void QMutableListIterator::setValue(const T &value) const

value を使用して、いずれかの探索関数によってスキップされた最後の項目の値を置き換えます。

トラバーサル関数には、next()、previous()、findNext()、およびfindPrevious()があります。

例:

QMutableListIterator<double> i(list);
while (i.hasNext()) {
    double val = i.next();
    i.setValue(std::sqrt(val));
}

value()、remove()、およびinsert()も参照してください 。

void QMutableListIterator::toBack()

イテレータをコンテナの末尾(最後の要素の後ろ)に移動します。

toFront() およびprevious()も参照してください 。

void QMutableListIterator::toFront()

イテレータをコンテナの先頭(最初の要素の前)に移動します。

toBack() およびnext()も参照してください 。

const T &QMutableListIterator::value() const

トラバーサル関数(next()、previous()、findNext()、findPrevious())のいずれかを使用してスキップされた最後の項目の値を返します。

next() またはfindNext() の呼び出し後は、value() はpeekPrevious() と同等になります。previous() またはfindPrevious() の呼び出し後は、value() はpeekNext() と同等になります。

setValue()も参照してください 。

T &QMutableListIterator::value()

トラバーサル関数のいずれかを使用してスキップされた最後の項目の値への非const参照を返します。

これはオーバーロードされた関数です。

QMutableListIterator<T> &QMutableListIterator::operator=(QList<T> &list)

イテレータが `list` 上で動作するようにします。イテレータはリストの先頭(最初の要素の前)に位置するように設定されます。

toFront() およびtoBack()も参照してください 。

© 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.