Auf dieser Seite

QMutableMapIterator Class

template <typename Key, typename T> class QMutableMapIterator

Die Klasse „QMutableMapIterator“ stellt einen nicht-konstanten Iterator im Java-Stil für „ QMap “ bereit. Mehr dazu...

Header: #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)

Ausführliche Beschreibung

QMap 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 ` Key ` gibt den Schlüsseltyp der Map an, und ` T ` gibt den Werttyp an.

Mit `QMutableMapIterator<Key, T>` können Sie eine ` QMap ` durchlaufen und die Map ändern. Wenn Sie die Map nicht ändern möchten (oder einen `const QMap` haben), verwenden Sie stattdessen den etwas schnelleren ` QMapIterator `.

Der Konstruktor von `QMutableMapIterator` nimmt ein ` QMap ` als Argument entgegen. Nach der Konstruktion befindet sich der Iterator ganz am Anfang der Map (vor dem ersten Element). So durchlaufen Sie alle Elemente nacheinander:

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 schiebt den Iterator um einen Schritt 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 verweisen Iteratoren im Java-Stil nicht direkt auf Elemente, sondern auf die Position zwischen zwei Elementen. 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 so weiter.

Positionen des Iterators zwischen den Elementen A, B, C, D

So durchlaufen Sie die Elemente in umgekehrter Reihenfolge:

QMutableMapIterator<int, QWidget*> i(map);
i.toBack();
while (i.hasPrevious()) {
    i.previous();
    qDebug() << i.key() << ": " << i.value();
}

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

QMutableMapIterator<int, QWidget*> i(map);
while (i.findNext(widget)) {
    qDebug() << "Found widget " << widget << " under key "
           << i.key();
}

Wenn Sie beim Durchlaufen der Map Elemente entfernen möchten, verwenden Sie ` remove()`. Wenn Sie den Wert eines Elements ändern möchten, 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 Schlüssel und Wert identisch sind.

Es kann zu jedem Zeitpunkt nur ein veränderbarer Iterator für eine bestimmte Map aktiv sein. Außerdem sollten keine Änderungen direkt an der Map 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 QMapIterator und QMap::iterator.

Dokumentation zu den Member-Funktionen

QMutableMapIterator::QMutableMapIterator(QMap<Key, T> &map)

Erstellt einen Iterator zum Durchlaufen von map. Der Iterator wird so gesetzt, dass er sich am Anfang der Map befindet (vor dem ersten Element).

Siehe auch operator=().

bool QMutableMapIterator::findNext(const T &value)

Sucht nach „ value “ ausgehend von der aktuellen Iteratorposition in Vorwärtsrichtung. Gibt „ true “ zurück, wenn ein (Schlüssel, Wert)-Paar mit dem Wert „ value “ gefunden wird; andernfalls wird „ false “ zurückgegeben.

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

Siehe auch findPrevious().

bool QMutableMapIterator::findPrevious(const T &value)

Sucht nach „ value “ ausgehend von der aktuellen Iteratorposition rückwärts. Gibt „ true “ zurück, wenn ein (Schlüssel, Wert)-Paar mit dem Wert „ value “ gefunden wird; andernfalls wird „ false “ zurückgegeben.

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

Siehe auch findNext().

bool QMutableMapIterator::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 QMutableMapIterator::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()`.

const Key &QMutableMapIterator::key() const

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

Nach einem Aufruf von ` next()` oder ` findNext()` ist ` key()` gleichbedeutend mit ` peekPrevious()`. `key()`. Nach einem Aufruf von ` previous()` oder ` findPrevious()` ist ` key()` gleichbedeutend mit ` peekNext()`. `key()`.

Siehe auch value().

QMutableMapIterator<Key, T>::Item QMutableMapIterator::next()

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

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 für 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 für 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::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 für einen Iterator, der sich am Anfang des Containers befindet, führt zu undefinierten Ergebnissen.

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

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 für einen Iterator, der sich am Anfang des Containers befindet, führt zu undefinierten Ergebnissen.

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

void QMutableMapIterator::remove()

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

Siehe auch setValue().

void QMutableMapIterator::setValue(const T &value)

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

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

Siehe auch „ key()“, „ value()“ und „ remove()“.

void QMutableMapIterator::toBack()

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

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

void QMutableMapIterator::toFront()

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

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

const T &QMutableMapIterator::value() const

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

Nach einem Aufruf von next() oder findNext() ist value() gleichbedeutend mit peekPrevious().value(). Nach einem Aufruf von previous() oder findPrevious() ist value() gleichbedeutend mit peekNext().value().

Siehe auch key() und setValue().

T &QMutableMapIterator::value()

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

QMutableMapIterator<Key, T> &QMutableMapIterator::operator=(QMap<Key, T> &map)

Stellt sicher, dass der Iterator auf „ map “ arbeitet. Der Iterator wird so gesetzt, dass er sich am Anfang der Map 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.