Auf dieser Seite

QHashIterator Class

template <typename Key, typename T> class QHashIterator

Die Klasse „QHashIterator“ stellt einen Iterator im Java-Stil für „ QHash “ und „ QMultiHash “ bereit. Mehr...

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

Öffentliche Funktionen

QHashIterator(const QHash<Key, T> &hash)
bool findNext(const T &value)
bool hasNext() const
const Key &key() const
QHashIterator<Key, T>::Item next()
QHashIterator<Key, T>::Item peekNext() const
void toBack()
void toFront()
const T &value() const
QHashIterator<Key, T> &operator=(const 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 `QHashIterator<Key, T>` können Sie über einen ` QHash ` (oder einen ` QMultiHash`) iterieren. Wenn Sie den Hash während der Iteration ändern möchten, verwenden Sie stattdessen ` QMutableHashIterator `.

Der Konstruktor von `QHashIterator` nimmt ein ` QHash ` als Argument entgegen. Nach der Initialisierung befindet sich der Iterator ganz am Anfang des Hash (vor dem ersten Element). So durchlaufen Sie alle Elemente nacheinander:

QHash<int, QWidget*> hash;
//...
QHashIterator<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 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 zeigen 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

Wenn Sie alle Vorkommen eines bestimmten Werts finden möchten, verwenden Sie ` findNext()` in einer Schleife. Zum Beispiel:

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

Für denselben Hash können mehrere Iteratoren verwendet werden. Wird der Hash geändert, während ein QHashIterator aktiv ist, setzt der QHashIterator die Iteration über den ursprünglichen Hash fort und ignoriert dabei die geänderte Kopie.

Siehe auch QMutableHashIterator und QHash::const_iterator.

Dokumentation zu den Mitgliedsfunktionen

QHashIterator::QHashIterator(const QHash<Key, T> &hash)

Erstellt einen Iterator zum Durchlaufen von ` hash`. Der Iterator wird so gesetzt, dass er sich am Anfang des Hash-Strukturs (vor dem ersten Element) befindet.

Siehe auch operator=().

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

bool QHashIterator::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 &QHashIterator::key() const

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

Siehe auch value().

QHashIterator<Key, T>::Item QHashIterator::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()` und ` peekNext()`.

QHashIterator<Key, T>::Item QHashIterator::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()` und ` next()`.

void QHashIterator::toBack()

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

Siehe auch ` toFront()`.

void QHashIterator::toFront()

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

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

const T &QHashIterator::value() const

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

Siehe auch key().

QHashIterator<Key, T> &QHashIterator::operator=(const 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).

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.