QMutableLinkedListIterator Class

template <typename T> class QMutableLinkedListIterator

QMutableLinkedListIteratorクラスは、QLinkedList 、Javaスタイルの非定数イテレータを提供します。さらに...

Header: #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>を繰り返し処理し、リストを変更することができます。リストを変更したくない場合(あるいは、QLinkedList を const で指定したい場合)は、代わりに少し高速なQLinkedListIterator<T> を使用してください。

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

QLinkedList<float> list;
...
QMutableLinkedListIterator<float> i(list);
while (i.hasNext())
    qDebug() << i.next();

next ()関数はリストの次の項目を返し、イテレータを進めます。STLスタイルのイテレータとは異なり、Javaスタイルのイテレータは、項目を直接指定するのではなく、項目間を指定します。next ()への最初の呼び出しは、イテレータを最初の項目と2番目の項目の間の位置に進め、最初の項目を返します。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つのリストに対して、常に1つの変更可能な反復子しかアクティブにできません。さらに、イテレータがアクティブな間は(イテレータを通してではなく)リストに直接変更を加えてはいけません。

QLinkedListIterator およびQLinkedList::iteratorも参照して ください。

メンバ関数ドキュメント

QMutableLinkedListIterator::QMutableLinkedListIterator(QLinkedList<T> &list)

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

operator=()も参照

QMutableLinkedListIterator<T> &QMutableLinkedListIterator::operator=(QLinkedList<T> &list)

イテレータをlist で操作するようにします。イテレータは、リストの先頭 (最初の項目の前) に設定されます。

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

void QMutableLinkedListIterator::toFront()

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

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

void QMutableLinkedListIterator::toBack()

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

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

bool QMutableLinkedListIterator::hasNext() const

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

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

bool QMutableLinkedListIterator::hasPrevious() const

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

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

bool QMutableLinkedListIterator::findNext(const T &value)

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

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

findPrevious()も参照のこと

bool QMutableLinkedListIterator::findPrevious(const T &value)

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

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

findNext()も参照

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

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

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

例:

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

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

const T &QMutableLinkedListIterator::value() const

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

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

setValue()も参照

T &QMutableLinkedListIterator::value()

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

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

©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。