QHashIterator Class

template <typename Key, typename T> class QHashIterator

Die Klasse QHashIterator bietet einen Konst-Iterator im Java-Stil für QHash und QMultiHash. Mehr...

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

Detaillierte Beschreibung

QHash hat sowohl Iteratoren im Java-Stil als auch Iteratoren im STL-Stil. Iteratoren im STL-Stil sind effizienter und sollten bevorzugt werden.

Mit QHashIterator<Key, T> können Sie über einen QHash (oder einen QMultiHash) iterieren. Wenn Sie den Hash während der Iteration ändern wollen, verwenden Sie stattdessen QMutableHashIterator.

Der QHashIterator-Konstruktor nimmt ein QHash als Argument. Nach der Konstruktion befindet sich der Iterator ganz am Anfang des Hashes (vor dem ersten Element). So können Sie alle Elemente der Reihe nach durchlaufen:

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 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.

Wenn Sie alle Vorkommen eines bestimmten Wertes finden wollen, verwenden Sie findNext() in einer Schleife. Ein Beispiel:

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

Mehrere Iteratoren können auf denselben Hash angewendet werden. Wenn der Hash geändert wird, während ein QHashIterator aktiv ist, iteriert der QHashIterator weiter über den ursprünglichen Hash und ignoriert die geänderte Kopie.

Siehe auch QMutableHashIterator und QHash::const_iterator.

Dokumentation der Mitgliedsfunktionen

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

Konstruiert einen Iterator zum Durchlaufen von hash. Der Iterator wird so gesetzt, dass er am Anfang des Hash steht (vor dem ersten Element).

Siehe auch operator=().

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

Lässt den Iterator auf hash arbeiten. Der Iterator wird so eingestellt, dass er am Anfang des Hash steht (vor dem ersten Element).

Siehe auch toFront() und toBack().

void QHashIterator::toFront()

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

Siehe auch toBack() und next().

void QHashIterator::toBack()

Verschiebt den Iterator an das Ende des Containers (nach dem letzten Element).

Siehe auch toFront().

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

const Key &QHashIterator::key() const

Gibt den Schlüssel des letzten Elements zurück, das mit einer der Traversalfunktionen (next(), findNext()) übersprungen wurde.

Siehe auch value().

bool QHashIterator::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, wenn value gefunden wurde, direkt hinter dem passenden Element positioniert; andernfalls wird der Iterator am Ende des Containers positioniert.

QHashIterator<Key, T>::Item QHashIterator::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() 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 auf einen Iterator, der sich am Ende des Containers befindet, führt zu undefinierten Ergebnissen.

Siehe auch hasNext() und next().

const T &QHashIterator::value() const

Gibt den Wert des letzten Elements zurück, das mit einer der Traversalfunktionen (next(), findNext()) übersprungen wurde.

Siehe auch key().

© 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.