QMutableLinkedListIterator Class
template <typename T> class QMutableLinkedListIteratorDie Klasse QMutableLinkedListIterator bietet einen nicht-konstanten Iterator im Java-Stil für QLinkedList. Mehr...
Kopfzeile: | #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) |
Detaillierte Beschreibung
QLinkedList hat sowohl Iteratoren im Java-Stil als auch Iteratoren im STL-Stil. Die Iteratoren im Java-Stil sind anspruchsvoller und einfacher zu verwenden als die Iteratoren im STL-Stil; auf der anderen Seite sind sie etwas weniger effizient.
QMutableLinkedListIterator<T> erlaubt es, über eine QLinkedList<T> zu iterieren und die Liste zu verändern. Wenn Sie die Liste nicht verändern wollen (oder eine const QLinkedList haben), verwenden Sie stattdessen die etwas schnellere QLinkedListIterator<T>.
Der QMutableLinkedListIterator Konstruktor nimmt ein QLinkedList als Argument. Nach der Konstruktion befindet sich der Iterator ganz am Anfang der Liste (vor dem ersten Element). So können Sie alle Elemente der Reihe nach durchlaufen:
QLinkedList<float> list;...QMutableLinkedListIterator<Fließkomma> i(Liste);while (i.hasNext()) qDebug() << i.next();
Die Funktion next() gibt das nächste Element in der Liste zurück und setzt den Iterator fort. Im Gegensatz zu Iteratoren im STL-Stil zeigen Iteratoren im Java-Stil zwischen Elementen und nicht direkt auf Elemente. 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, usw.
So kann man die Elemente in umgekehrter Reihenfolge durchlaufen:
QMutableLinkedListIterator<float> i(list); i.toBack();while (i.hasPrevious()) qDebug() << i.previous();
Wenn Sie alle Vorkommen eines bestimmten Wertes finden wollen, verwenden Sie findNext() oder findPrevious() in einer Schleife.
Wenn Sie beim Durchlaufen der Liste Elemente entfernen möchten, verwenden Sie remove(). Wenn Sie den Wert eines Eintrags ändern wollen, verwenden Sie setValue(). Wenn Sie ein neues Element in die Liste einfügen wollen, 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(); } }
In diesem Beispiel wird eine Liste durchlaufen, wobei negative Zahlen durch ihre absoluten Werte ersetzt und Nullen eliminiert werden.
Es kann immer nur ein veränderbarer Iterator auf einer bestimmten Liste aktiv sein. Außerdem sollten keine Änderungen direkt an der Liste vorgenommen werden, während der Iterator aktiv ist (im Gegensatz zum Iterator), da dies den Iterator ungültig machen und zu undefiniertem Verhalten führen könnte.
Siehe auch QLinkedListIterator und QLinkedList::iterator.
Dokumentation der Mitgliedsfunktionen
QMutableLinkedListIterator::QMutableLinkedListIterator(QLinkedList<T> &list)
Konstruiert einen Iterator zum Durchlaufen von list. Der Iterator wird so gesetzt, dass er am Anfang der Liste steht (vor dem ersten Element).
Siehe auch operator=().
QMutableLinkedListIterator<T> &QMutableLinkedListIterator::operator=(QLinkedList<T> &list)
Lässt den Iterator auf list arbeiten. Der Iterator wird so eingestellt, dass er am Anfang der Liste steht (vor dem ersten Element).
Siehe auch toFront() und toBack().
void QMutableLinkedListIterator::toFront()
Verschiebt den Iterator an den Anfang des Containers (vor das erste Element).
Siehe auch toBack() und next().
void QMutableLinkedListIterator::toBack()
Verschiebt den Iterator an das Ende des Containers (nach dem letzten Element).
Siehe auch toFront() und previous().
bool QMutableLinkedListIterator::hasNext() const
Gibt true
zurück, wenn sich mindestens ein Element vor dem Iterator befindet, d. h. der Iterator steht 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 steht nicht am Anfang des Containers; andernfalls wird false
zurückgegeben.
Siehe auch hasNext() und previous().
bool QMutableLinkedListIterator::findNext(const T &value)
Sucht ab der aktuellen Iteratorposition vorwärts nach value. Gibt true
zurück, wenn value gefunden wird; andernfalls false
.
Nach dem Aufruf wird der Iterator, falls value gefunden wurde, direkt nach dem passenden Element positioniert; andernfalls wird der Iterator am Ende des Containers positioniert.
Siehe auch findPrevious().
bool QMutableLinkedListIterator::findPrevious(const T &value)
Sucht ab der aktuellen Iteratorposition rückwärts nach value. Gibt true
zurück, wenn value gefunden wird; andernfalls wird false zurückgegeben.
Nach dem Aufruf wird der Iterator, falls value gefunden wurde, unmittelbar vor dem passenden Element positioniert; andernfalls wird der Iterator an den Anfang des Containers gesetzt.
Siehe auch findNext().
void QMutableLinkedListIterator::insert(const T &value)
Fügt value an der aktuellen Iteratorposition ein. Nach dem Aufruf befindet sich der Iterator direkt hinter dem eingefügten Element.
Siehe auch remove() und setValue().
T &QMutableLinkedListIterator::next()
Gibt einen Verweis auf das nächste Element zurück und rückt den Iterator um eine Position vor.
Der Aufruf dieser Funktion bei einem Iterator, der sich am Ende des Containers befindet, führt zu undefinierten Ergebnissen.
Siehe auch hasNext(), peekNext(), und previous().
T &QMutableLinkedListIterator::peekNext() const
Gibt einen Verweis auf das nächste Element zurück, ohne den Iterator zu verschieben.
Der Aufruf dieser Funktion bei einem Iterator, der sich am Ende des Containers befindet, führt zu undefinierten Ergebnissen.
Siehe auch hasNext(), next(), und peekPrevious().
T &QMutableLinkedListIterator::peekPrevious() const
Gibt einen Verweis auf das vorherige Element zurück, ohne den Iterator zu verschieben.
Der Aufruf dieser Funktion bei einem Iterator, der sich am Anfang des Containers befindet, führt zu undefinierten Ergebnissen.
Siehe auch hasPrevious(), previous(), und peekNext().
T &QMutableLinkedListIterator::previous()
Gibt einen Verweis auf das vorherige Element zurück und verschiebt den Iterator um eine Position zurück.
Der Aufruf dieser Funktion bei einem 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 Traversalfunktionen (next(), previous(), findNext(), findPrevious()) übersprungen wurde.
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 mit einer der Traversalfunktionen übersprungen wurde, durch value.
Die Überspringungsfunktionen 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().
const T &QMutableLinkedListIterator::value() const
Gibt den Wert des letzten Elements zurück, das mit einer der Traversalfunktionen (next(), previous(), findNext(), findPrevious()) übersprungen wurde.
Nach einem Aufruf von next() oder findNext() ist value() äquivalent zu peekPrevious(). Nach einem Aufruf von previous() oder findPrevious() ist value() gleichbedeutend mit peekNext().
Siehe auch setValue().
T &QMutableLinkedListIterator::value()
Dies ist eine überladene Funktion.
Gibt eine Nicht-Konst-Referenz auf den Wert des letzten Elements zurück, das mit einer der Traversalfunktionen übersprungen wurde.
© 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.