QMutableMapIterator Class
template <typename Key, typename T> class QMutableMapIteratorDie Klasse QMutableMapIterator bietet einen nicht-konstanten Iterator im Java-Stil für QMap. Mehr...
Kopfzeile: | #include <QMutableMapIterator> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Öffentliche Funktionen
QMutableMapIterator(QMap<Key, T> &map) | |
bool | findNext(const T &value) |
bool | findPrevious(const T &value) |
bool | hasNext() const |
bool | hasPrevious() const |
const Key & | key() const |
QMutableMapIterator<Key, T>::Item | next() |
QMutableMapIterator<Key, T>::Item | peekNext() const |
QMutableMapIterator<Key, T>::Item | peekPrevious() const |
QMutableMapIterator<Key, T>::Item | previous() |
void | remove() |
void | setValue(const T &value) |
void | toBack() |
void | toFront() |
const T & | value() const |
T & | value() |
QMutableMapIterator<Key, T> & | operator=(QMap<Key, T> &map) |
Detaillierte Beschreibung
QMap hat sowohl Iteratoren im Java-Stil als auch Iteratoren im STL-Stil. Iteratoren im STL-Stil sind effizienter und sollten bevorzugt werden.
QMutableMapIterator<Key, T> ermöglicht es, über eine QMap zu iterieren und die Map zu verändern. Wenn Sie die Map nicht verändern wollen (oder eine const QMap haben), verwenden Sie stattdessen die etwas schnellere QMapIterator.
Der QMutableMapIterator-Konstruktor nimmt ein QMap als Argument an. Nach der Konstruktion befindet sich der Iterator ganz am Anfang der Map (vor dem ersten Element). So können Sie alle Elemente der Reihe nach durchlaufen:
QMap<int, QWidget*> map;...QMutableMapIterator<int, QWidget*> i(map);while (i.hasNext()) { i.next(); qDebug() << i.key() << ": " << i.value(); }
Die Funktion next() gibt das nächste Element in der Map zurück und schaltet den Iterator weiter. Die Funktionen key() und value() geben den Schlüssel und den Wert des zuletzt übersprungenen Elements zurück.
Im Gegensatz zu Iteratoren im STL-Stil zeigen Iteratoren im Java-Stil zwischen Elementen und nicht direkt auf Elemente. Der erste Aufruf von next() setzt den Iterator an die Position zwischen dem ersten und dem zweiten Element und gibt das erste Element zurück; der zweite Aufruf von next() setzt den Iterator an die Position zwischen dem zweiten und dem dritten Element und so weiter.
So können Sie die Elemente in umgekehrter Reihenfolge durchlaufen:
QMutableMapIterator<int, QWidget*> i(map); i.toBack();while (i.hasPrevious()) { i.previous(); qDebug() << i.key() << ": " << i.value(); }
Wenn Sie alle Vorkommen eines bestimmten Wertes finden wollen, verwenden Sie findNext() oder findPrevious() in einer Schleife. Zum Beispiel:
QMutableMapIterator<int, QWidget*> i(map);while (i.findNext(widget)) { qDebug() << "Found widget " << widget << " under key " << i.key(); }
Wenn Sie bei der Iteration über die Karte Elemente entfernen möchten, verwenden Sie remove(). Wenn Sie den Wert eines Elements ändern wollen, verwenden Sie setValue().
Beispiel:
QMutableMapIterator<QString, QString> i(map); while (i.hasNext()) { i.next(); if (i.key() == i.value()) i.remove(); }
Das Beispiel entfernt alle (Schlüssel, Wert)-Paare, bei denen der Schlüssel und der Wert identisch sind.
In einer gegebenen Map kann immer nur ein veränderbarer Iterator aktiv sein. Außerdem sollten keine Änderungen direkt an der Map 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 QMapIterator und QMap::iterator.
Dokumentation der Mitgliedsfunktionen
QMutableMapIterator::QMutableMapIterator(QMap<Key, T> &map)
Konstruiert einen Iterator zum Durchlaufen von map. Der Iterator wird so gesetzt, dass er am Anfang der Karte steht (vor dem ersten Element).
Siehe auch operator=().
QMutableMapIterator<Key, T> &QMutableMapIterator::operator=(QMap<Key, T> &map)
Lässt den Iterator auf map arbeiten. Der Iterator wird so eingestellt, dass er am Anfang der Karte steht (vor dem ersten Element).
Siehe auch toFront() und toBack().
void QMutableMapIterator::toFront()
Verschiebt den Iterator an den Anfang des Containers (vor das erste Element).
Siehe auch toBack() und next().
void QMutableMapIterator::toBack()
Verschiebt den Iterator an das Ende des Containers (nach dem letzten Element).
Siehe auch toFront() und previous().
bool QMutableMapIterator::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().
QMutableMapIterator<Key, T>::Item QMutableMapIterator::next()
Gibt das nächste Element zurück und rückt den Iterator um eine Position vor.
Rufen Sie key() für den Rückgabewert auf, um den Schlüssel des Elements zu erhalten, und value(), um den Wert zu erhalten.
Der Aufruf dieser Funktion auf einen Iterator, der sich am Ende des Containers befindet, führt zu undefinierten Ergebnissen.
Siehe auch hasNext(), peekNext(), und previous().
QMutableMapIterator<Key, T>::Item QMutableMapIterator::peekNext() const
Gibt das nächste Element zurück, ohne den Iterator zu verschieben.
Rufen Sie key() für den Rückgabewert auf, um den Schlüssel des Elements zu erhalten, und value(), um den Wert zu erhalten.
Der Aufruf dieser Funktion auf einen Iterator, der sich am Ende des Containers befindet, führt zu undefinierten Ergebnissen.
Siehe auch hasNext(), next(), und peekPrevious().
QMutableMapIterator<Key, T>::Item QMutableMapIterator::peekNext() const
Gibt einen Verweis auf das nächste Element zurück, ohne den Iterator zu verschieben.
Rufen Sie key() für den Rückgabewert auf, um den Schlüssel des Elements zu erhalten, und value(), um den Wert zu erhalten.
Der Aufruf dieser Funktion auf einen Iterator, der sich am Ende des Containers befindet, führt zu undefinierten Ergebnissen.
Siehe auch hasNext(), next(), und peekPrevious().
bool QMutableMapIterator::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().
QMutableMapIterator<Key, T>::Item QMutableMapIterator::previous()
Gibt das vorherige Element zurück und verschiebt den Iterator um eine Position zurück.
Rufen Sie key() für den Rückgabewert auf, um den Schlüssel des Elements zu erhalten, und value(), um den Wert zu erhalten.
Der Aufruf dieser Funktion auf einen Iterator, der sich am Anfang des Containers befindet, führt zu undefinierten Ergebnissen.
Siehe auch hasPrevious(), peekPrevious(), und next().
QMutableMapIterator<Key, T>::Item QMutableMapIterator::peekPrevious() const
Gibt das vorherige Element zurück, ohne den Iterator zu verschieben.
Rufen Sie key() für den Rückgabewert auf, um den Schlüssel des Elements zu erhalten, und value(), um den Wert zu erhalten.
Der Aufruf dieser Funktion auf einen Iterator, der sich am Anfang des Containers befindet, führt zu undefinierten Ergebnissen.
Siehe auch hasPrevious(), previous(), und peekNext().
const T &QMutableMapIterator::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().value(). Nach einem Aufruf von previous() oder findPrevious() ist value() gleichbedeutend mit peekNext().value().
Siehe auch key() und setValue().
T &QMutableMapIterator::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.
const Key &QMutableMapIterator::key() const
Gibt den Schlüssel des letzten Elements zurück, das mit einer der Traversalfunktionen (next(), previous(), findNext(), findPrevious()) übersprungen wurde.
Nach einem Aufruf von next() oder findNext() ist key() äquivalent zu peekPrevious().key(). Nach einem Aufruf von previous() oder findPrevious() ist key() gleichbedeutend mit peekNext().key().
Siehe auch value().
bool QMutableMapIterator::findNext(const T &value)
Sucht nach value ab der aktuellen Iteratorposition vorwärts. Gibt true
zurück, wenn ein (Schlüssel, Wert)-Paar mit dem Wert value gefunden wird; andernfalls false
.
Nach dem Aufruf wird der Iterator, falls value gefunden wurde, direkt hinter dem passenden Element positioniert; andernfalls wird der Iterator am Ende des Containers positioniert.
Siehe auch findPrevious().
bool QMutableMapIterator::findPrevious(const T &value)
Sucht ab der aktuellen Iteratorposition rückwärts nach value. Gibt true
zurück, wenn ein (Schlüssel, Wert)-Paar mit dem Wert value gefunden wird; andernfalls false
.
Nach dem Aufruf wird der Iterator, falls value gefunden wurde, unmittelbar vor dem passenden Element positioniert; andernfalls wird der Iterator am Anfang des Containers positioniert.
Siehe auch findNext().
void QMutableMapIterator::remove()
Entfernt das letzte Element, das mit einer der Traversalfunktionen (next(), previous(), findNext(), findPrevious()) übersprungen wurde.
Siehe auch setValue().
void QMutableMapIterator::setValue(const T &value)
Ersetzt den Wert des letzten Elements, das mit einer der Traversalfunktionen übersprungen wurde, durch value.
Die Traversalfunktionen sind next(), previous(), findNext() und findPrevious().
© 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.