QMutableHashIterator Class
template <typename Key, typename T> class QMutableHashIteratorDie Klasse „QMutableHashIterator“ stellt einen nicht-konstanten Iterator im Java-Stil für „ QHash “ und „ QMultiHash “ bereit. Mehr...
| Header: | #include <QMutableHashIterator> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QMutableHashIterator ist Teil der Iteratoren im Java-Stil in Qt.
Öffentliche Funktionen
| QMutableHashIterator(QHash<Key, T> &hash) | |
| bool | findNext(const T &value) |
| bool | hasNext() const |
| const Key & | key() const |
| QMutableHashIterator<Key, T>::Item | next() |
| QMutableHashIterator<Key, T>::Item | peekNext() const |
| void | remove() |
| void | setValue(const T &value) |
| void | toBack() |
| void | toFront() |
| const T & | value() const |
| T & | value() |
| QMutableHashIterator<Key, T> & | operator=(QHash<Key, T> &hash) |
Ausführliche Beschreibung
QHash 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 des Hashs an, und ` T ` gibt den Werttyp an.
Mit `QMutableHashIterator<Key, T>` können Sie über einen ` QHash ` iterieren und den Hash ändern. Wenn Sie den Hash nicht ändern möchten (oder einen `const QHash` haben), verwenden Sie stattdessen den etwas schnelleren ` QHashIterator `.
Der Konstruktor von `QMutableHashIterator` nimmt einen ` QHash ` als Argument entgegen. Nach der Initialisierung befindet sich der Iterator ganz am Anfang des Hashs (vor dem ersten Element). So können Sie nacheinander alle Elemente durchlaufen:
QHash<int, QWidget*> hash;
//...
QMutableHashIterator<int, QWidget*> i(hash);
while (i.hasNext()) {
i.next();
qDebug() << i.key() << ": " << i.value();
}Die Funktion ` next()` gibt das nächste Element im Hash zurück und schreitet mit dem Iterator fort. 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 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 so weiter.
Wenn Sie alle Vorkommen eines bestimmten Werts finden möchten, verwenden Sie ` findNext()` in einer Schleife. Zum Beispiel:
QMutableHashIterator<int, QWidget*> i(hash);
while (i.findNext(widget)) {
qDebug() << "Found widget " << widget << " under key "
<< i.key();
}Wenn Sie beim Durchlaufen des Hash-Strukturs Elemente entfernen möchten, verwenden Sie remove(). Wenn Sie den Wert eines Elements ändern möchten, verwenden Sie setValue().
Beispiel:
QMutableHashIterator<QString, QString> i(hash);
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 einen bestimmten Hash aktiv sein. Außerdem sollten keine Änderungen direkt am Hash 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 QHashIterator und QHash::iterator.
Dokumentation zu Mitgliedsfunktionen
QMutableHashIterator::QMutableHashIterator(QHash<Key, T> &hash)
Erstellt einen Iterator zum Durchlaufen von hash. Der Iterator wird so gesetzt, dass er sich am Anfang des Hashs befindet (vor dem ersten Element).
Siehe auch operator=().
bool QMutableHashIterator::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 „ value “ gefunden, wird der Iterator nach dem Aufruf direkt hinter dem entsprechenden Element positioniert; andernfalls wird der Iterator am Ende des Containers positioniert.
bool QMutableHashIterator::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 Key &QMutableHashIterator::key() const
Gibt den Schlüssel des letzten Elements zurück, das mithilfe einer der Durchlauffunktionen (next(), findNext()) übersprungen wurde.
Siehe auch value().
QMutableHashIterator<Key, T>::Item QMutableHashIterator::next()
Gibt das nächste Element zurück und verschiebt den Iterator um eine Position nach vorne.
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()` und ` peekNext()`.
QMutableHashIterator<Key, T>::Item QMutableHashIterator::peekNext() const
Gibt eine Referenz 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 für einen Iterator, der sich am Ende des Containers befindet, führt zu undefinierten Ergebnissen.
Siehe auch ` hasNext()` und ` next()`.
void QMutableHashIterator::remove()
Entfernt das letzte Element, das mit einer der Durchlauffunktionen (next(), findNext()) übersprungen wurde.
Siehe auch setValue().
void QMutableHashIterator::setValue(const T &value)
Ersetzt den Wert des letzten Elements, das mithilfe einer der Durchlauffunktionen übersprungen wurde, durch „ value “.
Die Durchlauffunktionen sind „ next()“ und „ findNext()“.
Siehe auch „ key()“, „ value()“ und „ remove()“.
void QMutableHashIterator::toBack()
Verschiebt den Iterator an das Ende des Containers (hinter das letzte Element).
Siehe auch ` toFront()`.
void QMutableHashIterator::toFront()
Verschiebt den Iterator an den Anfang des Containers (vor das erste Element).
Siehe auch „ toBack()“ und „ next()“.
const T &QMutableHashIterator::value() const
Gibt den Wert des letzten Elements zurück, das mithilfe einer der Durchlauffunktionen (next(), findNext()) übersprungen wurde.
Siehe auch key() und setValue().
T &QMutableHashIterator::value()
Gibt eine nicht-konstante Referenz auf den Wert des letzten Elements zurück, das mithilfe einer der Durchlauffunktionen übersprungen wurde.
QMutableHashIterator<Key, T> &QMutableHashIterator::operator=(QHash<Key, T> &hash)
Stellt sicher, dass der Iterator auf hash arbeitet. Der Iterator wird so gesetzt, dass er sich am Anfang des Hashs 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.