QMutableSetIterator Class

template <typename T> class QMutableSetIterator

Die Klasse QMutableSetIterator bietet einen nicht-konstanten Iterator im Java-Stil für QSet. Mehr...

Kopfzeile: #include <QMutableSetIterator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Öffentliche Funktionen

QMutableSetIterator(QSet<T> &set)
bool findNext(const T &value)
bool hasNext() const
const T &next()
const T &peekNext() const
void remove()
void toBack()
void toFront()
const T &value() const
QMutableSetIterator<T> &operator=(QSet<T> &set)

Detaillierte Beschreibung

QSet hat sowohl Iteratoren im Java-Stil als auch Iteratoren im STL-Stil. STL-artige Iteratoren sind effizienter und sollten bevorzugt werden.

QMutableSetIterator<T> ermöglicht die Iteration über eine QSet<T> und das Entfernen von Elementen aus der Menge während der Iteration. Wenn Sie die Menge nicht verändern wollen (oder eine const QSet haben), verwenden Sie stattdessen die etwas schnellere QSetIterator<T>.

Der QMutableSetIterator-Konstruktor nimmt ein QSet als Argument an. Nach der Konstruktion befindet sich der Iterator ganz am Anfang der Menge (vor dem ersten Element). So können Sie alle Elemente der Reihe nach durchlaufen:

QSet<float> set;
...
QMutableSetIterator<float> i(set);
while (i.hasNext())
    float f = i.next();

Die Funktion next() gibt das nächste Element in der Menge zurück und schaltet den Iterator weiter. 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.

Wenn Sie Elemente entfernen möchten, während Sie über die Menge iterieren, verwenden Sie remove().

Es kann immer nur ein veränderbarer Iterator für eine bestimmte Menge aktiv sein. Außerdem sollten keine Änderungen direkt an der Menge 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 QSetIterator und QSet::iterator.

Dokumentation der Mitgliedsfunktionen

QMutableSetIterator::QMutableSetIterator(QSet<T> &set)

Konstruiert einen Iterator zum Durchlaufen von set. Der Iterator wird so gesetzt, dass er am Anfang der Menge steht (vor dem ersten Element).

Siehe auch operator=().

QMutableSetIterator<T> &QMutableSetIterator::operator=(QSet<T> &set)

Lässt den Iterator auf set arbeiten. Der Iterator wird so eingestellt, dass er am Anfang der Menge steht (vor dem ersten Element).

Siehe auch toFront() und toBack().

void QMutableSetIterator::toFront()

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

Siehe auch toBack() und next().

bool QMutableSetIterator::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.

bool QMutableSetIterator::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 next().

const T &QMutableSetIterator::next()

Gibt 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() und peekNext().

const T &QMutableSetIterator::peekNext() const

Gibt 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() und next().

void QMutableSetIterator::remove()

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

Beispiel:

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

Siehe auch value().

void QMutableSetIterator::toBack()

Verschiebt den Iterator an das Ende des Containers (nach dem letzten Element).

Siehe auch toFront().

const T &QMutableSetIterator::value() const

Gibt den Wert des letzten Elements zurück, das mit next() oder findNext() ü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.