QMutableListIterator Class

template <typename T> class QMutableListIterator

QMutableListIteratorクラスは、QListQQueueQStack に対する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スタイルのイテレータの方が効率的であり、そちらを優先すべきである。

イテレータを使用する代わりに、インデックス・ポジションを使用することもできます。ほとんどのQList メンバ関数は、インデックスを最初のパラメータとして取るので、イテレータを使わなくても項目へのアクセス、挿入、削除が可能です。

QMutableListIterator<T>を使えば、QList<T>(またはQQueue<T>)を繰り返し処理し、リストを変更することができます。リストを変更したくない場合(あるいは、QList の定数を持っている場合)は、代わりに少し高速なQListIterator<T>を使用してください。

QMutableListIteratorコンストラクタは、引数としてQList 。構築後、イテレーターはリストの一番最初(最初の項目の前)に位置します。以下は、すべての要素を順次反復処理する方法です:

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

next ()関数はリストの次の項目を返し、イテレータを進めます。STLスタイルのイテレータとは異なり、Javaスタイルのイテレータは、項目を直接指定するのではなく、項目間を指定します。next ()への最初の呼び出しは、イテレータを最初の項目と2番目の項目の間の位置に進め、最初の項目を返します。next ()への2回目の呼び出しは、イテレータを2番目の項目と3番目の項目の間の位置に進め、2番目の項目を返します。

以下は、要素を逆順に反復処理する方法です:

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つのリストに対して、常に1つの変更可能な反復子しかアクティブにできません。さらに、イテレータがアクティブな間は(イテレータを通してではなく)リストに直接変更を加えてはいけません。イテレータが無効になり、未定義の動作につながる可能性があるからです。

QListIterator およびQList::iteratorも参照して ください。

メンバ関数ドキュメント

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

list を走査するためのイテレータを構築します。イテレータはリストの先頭 (最初の項目の前) に設定されます。

operator=()も参照

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

イテレータをlist で動作させる。イテレータはリストの先頭(最初の項目の前)に設定される。

toFront() およびtoBack()も参照

void QMutableListIterator::toFront()

イテレータをコンテナの先頭(最初の項目の前)に移動する。

toBack() およびnext()も参照

void QMutableListIterator::toBack()

イテレータをコンテナの後ろ(最後のアイテムの後)に移動します。

toFront() およびprevious()も参照

bool QMutableListIterator::hasNext() const

イテレータの前に少なくとも1つのアイテムがある場合、つまりイテレータがコンテナの後ろにない場合はtrue を返し、そうでない場合はfalse を返す。

hasPrevious() およびnext()も参照

bool QMutableListIterator::hasPrevious() const

イテレータの後ろに少なくとも1つのアイテムがある場合、つまりイテレータがコンテナの先頭にない場合はtrue を返し、そうでない場合はfalse を返す。

hasNext() およびprevious()も参照

bool QMutableListIterator::findNext(const T &value)

現在のイテレータ位置から前方に向かってvalue を検索する。value が見つかればtrue を返し、見つからなければfalse を返す。

呼び出し後、value が見つかった場合、イテレータは一致する項目の直後に配置されます。そうでない場合、イテレータはコンテナの後ろに配置されます。

findPrevious()も参照

bool QMutableListIterator::findPrevious(const T &value)

現在のイテレータ位置から後方にvalue を検索する。value が見つかればtrue を返し、見つからなければ false を返す。

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

findNext()も参照のこと

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

トラバーサル関数の1つを使用してジャンプオーバーされた最後の項目の値をvalue で置き換える。

トラバーサル関数は、next()、previous()、findNext()、findPrevious() です。

例:

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

value()、remove()、insert()も参照

const T &QMutableListIterator::value() const

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

next() またはfindNext() を呼び出した後は、value() はpeekPrevious() と同じ。previous() またはfindPrevious() を呼び出した後は、value() はpeekNext() と同じ。

setValue()も参照

T &QMutableListIterator::value()

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

トラバーサル関数のいずれかを使って最後にジャンプオーバーした項目の値への nononst リファレンスを返します。

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