QMutableSetIterator Class
template <typename T> class QMutableSetIteratorDie Klasse „QMutableSetIterator“ stellt einen nicht-konstanten Iterator im Java-Stil für „ QSet “ bereit. Mehr...
| Header: | #include <QMutableSetIterator> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QMutableSetIterator ist Teil der Iteratoren im Java-Stil in Qt.
Ö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) |
Ausführliche Beschreibung
QSet verfügt sowohl über Iteratoren im Java-Stil als auch über Iteratoren im STL-Stil. Iteratoren im STL-Stil sind effizienter und sollten bevorzugt werden. Der Template-Parameter ` T ` gibt den Typ der im Set gespeicherten Elemente an.
Mit `QMutableSetIterator<T>` können Sie über ein ` QSet<T>` iterieren und dabei Elemente aus dem Set entfernen. Wenn Sie das Set nicht verändern möchten (oder ein `const`- QSet verwenden), nutzen Sie stattdessen den etwas schnelleren ` QSetIterator<T>`.
Der Konstruktor von `QMutableSetIterator` nimmt ein ` QSet ` als Argument entgegen. Nach der Initialisierung befindet sich der Iterator ganz am Anfang des Sets (vor dem ersten Element). So durchlaufen Sie alle Elemente nacheinander:
QSet<float> set;
//...
QMutableSetIterator<float> i(set);
while (i.hasNext())
float f = i.next();Die Funktion ` next()` gibt das nächste Element im Set zurück und verschiebt den Iterator um ein Element weiter. Im Gegensatz zu Iteratoren im STL-Stil zeigen Iteratoren im Java-Stil nicht direkt auf Elemente, sondern zwischen ihnen. 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.
Wenn Sie Elemente entfernen möchten, während Sie die Menge durchlaufen, verwenden Sie ` remove()`.
Zu jedem Zeitpunkt kann nur ein veränderbare 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 zu Änderungen über den Iterator), da dies den Iterator ungültig machen und zu undefiniertem Verhalten führen könnte.
Siehe auch QSetIterator und QSet::iterator.
Dokumentation zu den Mitgliedsfunktionen
QMutableSetIterator::QMutableSetIterator(QSet<T> &set)
Erstellt einen Iterator zum Durchlaufen von set. Der Iterator wird so gesetzt, dass er sich am Anfang der Menge befindet (vor dem ersten Element).
Siehe auch ` operator=()`.
bool QMutableSetIterator::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 „ value “ nach dem Aufruf gefunden, wird der Iterator direkt hinter dem entsprechenden 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 befindet sich 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 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()“ und „ peekNext()“.
const T &QMutableSetIterator::peekNext() const
Gibt 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()“ und „ next()“.
void QMutableSetIterator::remove()
Entfernt das letzte Element, das mithilfe einer der Durchlauffunktionen (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 (hinter das letzte Element).
Siehe auch ` toFront()`.
void QMutableSetIterator::toFront()
Verschiebt den Iterator an den Anfang des Containers (vor das erste Element).
Siehe auch „ toBack()“ und „ next()“.
const T &QMutableSetIterator::value() const
Gibt den Wert des letzten Elements zurück, das mit „ next()“ oder „ findNext()“ übersprungen wurde.
QMutableSetIterator<T> &QMutableSetIterator::operator=(QSet<T> &set)
Stellt sicher, dass der Iterator auf set arbeitet. Der Iterator wird so gesetzt, dass er sich am Anfang der Menge befindet (vor dem ersten Element).
© 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.