Auf dieser Seite

QMutableLinkedListIterator Class

template <typename T> class QMutableLinkedListIterator

Die Klasse `QMutableLinkedListIterator` stellt einen nicht-konstanten Iterator im Java-Stil für ` QLinkedList` bereit. Mehr...

Header: #include <QMutableLinkedListIterator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core5Compat)
target_link_libraries(mytarget PRIVATE Qt6::Core5Compat)
qmake: QT += core5compat

Öffentliche Funktionen

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)

Ausführliche Beschreibung

QLinkedList verfügt sowohl über Iteratoren im Java-Stil als auch über Iteratoren im STL-Stil. Die Iteratoren im Java-Stil sind abstrakter und einfacher zu verwenden als die Iteratoren im STL-Stil; andererseits sind sie etwas weniger effizient.

Mit `QMutableLinkedListIterator<T>` können Sie eine ` QLinkedList<T>` durchlaufen und die Liste ändern, wobei ` T ` der Elementtyp ist. Wenn Sie die Liste nicht ändern möchten (oder eine `const`- QLinkedList haben), verwenden Sie stattdessen den etwas schnelleren ` QLinkedListIterator<T>`.

Der Konstruktor von `QMutableLinkedListIterator` nimmt einen ` QLinkedList ` als Argument entgegen. Nach der Initialisierung befindet sich der Iterator ganz am Anfang der Liste (vor dem ersten Element). So durchlaufen Sie alle Elemente nacheinander:

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

Die Funktion „ next()“ gibt das nächste Element der Liste zurück und schiebt den Iterator vor. Im Gegensatz zu Iteratoren im STL-Stil zeigen Iteratoren im Java-Stil nicht direkt auf Elemente, sondern zwischen diese. Der erste Aufruf von ` next()` verschiebt den Iterator an die Position zwischen dem ersten und dem zweiten Element und gibt das erste Element zurück; der zweite Aufruf von ` next()` verschiebt den Iterator an die Position zwischen dem zweiten und dem dritten Element und gibt das zweite Element zurück; und so weiter.

Veranschaulichung der Verwendung von Iteratoren im Java-Stil in Qt

So durchlaufen Sie die Elemente in umgekehrter Reihenfolge:

QMutableLinkedListIterator<float> i(list);
i.toBack();
while (i.hasPrevious())
    qDebug() << i.previous();

Wenn Sie alle Vorkommen eines bestimmten Werts finden möchten, verwenden Sie „ findNext()“ oder „ findPrevious()“ in einer Schleife.

Wenn Sie Elemente entfernen möchten, während Sie die Liste durchlaufen, verwenden Sie ` remove()`. Wenn Sie den Wert eines Elements ändern möchten, verwenden Sie ` setValue()`. Wenn Sie ein neues Element in die Liste einfügen möchten, verwenden Sie ` insert()`.

Beispiel:

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

Das Beispiel durchläuft eine Liste, ersetzt negative Zahlen durch ihre Absolutwerte und entfernt Nullen.

Es kann zu jedem Zeitpunkt nur ein veränderbare Iterator für eine bestimmte Liste aktiv sein. Außerdem sollten keine Änderungen direkt an der Liste vorgenommen werden, solange der Iterator aktiv ist (im Gegensatz zu Änderungen über den Iterator), da dies den Iterator ungültig machen und zu undefiniertem Verhalten führen könnte.

Siehe auch QLinkedListIterator und QLinkedList::iterator.

Dokumentation zu Mitgliedsfunktionen

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

Erstellt einen Iterator zum Durchlaufen von ` list`. Der Iterator wird an den Anfang der Liste gesetzt (vor das erste Element).

Siehe auch operator=().

bool QMutableLinkedListIterator::findNext(const T &value)

Sucht nach „ value “ ausgehend von der aktuellen Iteratorposition in Vorwärtsrichtung. Gibt „ true “ zurück, wenn „ value “ gefunden wird; andernfalls wird „ false “ zurückgegeben.

Wurde nach dem Aufruf „ value “ gefunden, wird der Iterator direkt hinter dem übereinstimmenden Element positioniert; andernfalls wird der Iterator am Ende des Containers positioniert.

Siehe auch findPrevious().

bool QMutableLinkedListIterator::findPrevious(const T &value)

Sucht nach „ value “ ausgehend von der aktuellen Iteratorposition rückwärts. Gibt „ true “ zurück, wenn „ value “ gefunden wird; andernfalls wird „false“ zurückgegeben.

Wurde „ value “ nach dem Aufruf gefunden, wird der Iterator direkt vor dem entsprechenden Element positioniert; andernfalls wird der Iterator an den Anfang des Containers gesetzt.

Siehe auch findNext().

bool QMutableLinkedListIterator::hasNext() const

Gibt „ true “ zurück, wenn sich mindestens ein Element vor dem Iterator befindet, d. h., der Iterator befindet sich nicht am Ende des Containers; andernfalls wird „ false “ zurückgegeben.

Siehe auch ` hasPrevious()` und ` next()`.

bool QMutableLinkedListIterator::hasPrevious() const

Gibt „ true “ zurück, wenn sich mindestens ein Element hinter dem Iterator befindet, d. h. der Iterator befindet sich nicht am Anfang des Containers; andernfalls wird „ false “ zurückgegeben.

Siehe auch ` hasNext()` und ` previous()`.

void QMutableLinkedListIterator::insert(const T &value)

Fügt an der aktuellen Iteratorposition „ value “ ein. Nach dem Aufruf befindet sich der Iterator unmittelbar hinter dem eingefügten Element.

Siehe auch ` remove()` und ` setValue()`.

T &QMutableLinkedListIterator::next()

Gibt eine Referenz auf das nächste Element zurück und verschiebt den Iterator um eine Position weiter.

Der Aufruf dieser Funktion für einen Iterator, der sich am Ende des Containers befindet, führt zu undefinierten Ergebnissen.

Siehe auch hasNext(), peekNext() und previous().

T &QMutableLinkedListIterator::peekNext() const

Gibt eine Referenz auf das nächste Element zurück, ohne den Iterator zu verschieben.

Der Aufruf dieser Funktion für einen Iterator, der sich am Ende des Containers befindet, führt zu undefinierten Ergebnissen.

Siehe auch hasNext(), next() und peekPrevious().

T &QMutableLinkedListIterator::peekPrevious() const

Gibt eine Referenz auf das vorherige Element zurück, ohne den Iterator zu verschieben.

Der Aufruf dieser Funktion für einen Iterator, der sich am Anfang des Containers befindet, führt zu undefinierten Ergebnissen.

Siehe auch hasPrevious(), previous() und peekNext().

T &QMutableLinkedListIterator::previous()

Gibt eine Referenz auf das vorherige Element zurück und verschiebt den Iterator um eine Position zurück.

Der Aufruf dieser Funktion für einen Iterator, der sich am Anfang des Containers befindet, führt zu undefinierten Ergebnissen.

Siehe auch hasPrevious(), peekPrevious() und next().

void QMutableLinkedListIterator::remove()

Entfernt das letzte Element, das mit einer der Durchlauffunktionen übersprungen wurde (next(), previous(), findNext(), findPrevious()).

Beispiel:

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

Siehe auch insert() und setValue().

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

Ersetzt den Wert des letzten Elements, das mithilfe einer der Durchlauffunktionen übersprungen wurde, durch „ value “.

Die Durchlauffunktionen sind „ next()“, „ previous()“, „ findNext()“ und „ findPrevious()“.

Beispiel:

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

Siehe auch value(), remove() und insert().

void QMutableLinkedListIterator::toBack()

Verschiebt den Iterator an das Ende des Containers (hinter das letzte Element).

Siehe auch „ toFront()“ und „ previous()“.

void QMutableLinkedListIterator::toFront()

Verschiebt den Iterator an den Anfang des Containers (vor das erste Element).

Siehe auch „ toBack()“ und „ next()“.

const T &QMutableLinkedListIterator::value() const

Gibt den Wert des letzten Elements zurück, das mithilfe einer der Durchlauffunktionen (next(), previous(), findNext(), findPrevious()) übersprungen wurde.

Nach einem Aufruf von ` next()` oder ` findNext()` entspricht `value()` der Funktion ` peekPrevious()`. Nach einem Aufruf von ` previous()` oder ` findPrevious()` entspricht `value()` der Funktion ` peekNext()`.

Siehe auch setValue().

T &QMutableLinkedListIterator::value()

Gibt eine nicht-konstante Referenz auf den Wert des letzten Elements zurück, das mithilfe einer der Durchlauffunktionen übersprungen wurde.

Dies ist eine überladene Funktion.

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

Stellt sicher, dass der Iterator auf list arbeitet. Der Iterator wird so gesetzt, dass er sich am Anfang der Liste befindet (vor dem ersten Element).

Siehe auch toFront() und 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.