iterator Class
class QHash::iteratorDie Klasse QHash::iterator bietet einen STL-ähnlichen nicht-konstanten Iterator für QHash. Mehr...
Öffentliche Funktionen
iterator() | |
const Key & | key() const |
T & | value() const |
bool | operator!=(const QHash<Key, T>::const_iterator &other) const |
bool | operator!=(const QHash<Key, T>::iterator &other) const |
T & | operator*() const |
QHash<Key, T>::iterator & | operator++() |
QHash<Key, T>::iterator | operator++(int) |
T * | operator->() const |
bool | operator==(const QHash<Key, T>::const_iterator &other) const |
bool | operator==(const QHash<Key, T>::iterator &other) const |
Detaillierte Beschreibung
QHash<Schlüssel, T>::Iterator ermöglicht es, über eine QHash zu iterieren und den Wert (aber nicht den Schlüssel) zu ändern, der mit einem bestimmten Schlüssel verbunden ist. Wenn Sie über eine Konstante QHash iterieren wollen, sollten Sie QHash::const_iterator verwenden. Es ist im Allgemeinen eine gute Praxis, QHash::const_iterator auch für eine Nicht-Konstante QHash zu verwenden, es sei denn, Sie müssen die QHash durch den Iterator ändern. Konst-Iteratoren sind etwas schneller und können die Lesbarkeit des Codes verbessern.
Der Standard-Konstruktor QHash::iterator erzeugt einen nicht initialisierten Iterator. Sie müssen ihn mit einer QHash Funktion wie QHash::begin(), QHash::end() oder QHash::find() initialisieren, bevor Sie mit der Iteration beginnen können. Hier ist eine typische Schleife, die alle in einem Hash gespeicherten Paare (Schlüssel, Wert) ausgibt:
QHash<QString, int> hash; hash.insert("January", 1); hash.insert("February", 2); ... hash.insert("December", 12); for (auto i = hash.cbegin(), end = hash.cend(); i != end; ++i) cout << qPrintable(key()) << ": " << i.value() << endl;
Im Gegensatz zu QMap, das seine Elemente nach Schlüssel ordnet, speichert QHash seine Elemente in beliebiger Reihenfolge.
Hier ist ein Beispiel, das jeden in QHash gespeicherten Wert um 2 erhöht:
for (auto i = hash.begin(), end = hash.end(); i != end; ++i) i.value() += 2;
Um Elemente aus einem QHash zu entfernen, können Sie erase_if(QHash<Key, T> &map, Predicate pred) verwenden:
Mehrere Iteratoren können auf denselben Hash angewendet werden. Beachten Sie jedoch, dass jede Änderung, die direkt an QHash vorgenommen wird (Einfügen und Entfernen von Elementen), dazu führen kann, dass die Iteratoren ungültig werden.
Das Einfügen von Elementen in den Hash oder der Aufruf von Methoden wie QHash::reserve() oder QHash::squeeze() kann alle Iteratoren ungültig machen, die auf den Hash zeigen. Die Iteratoren bleiben garantiert nur so lange gültig, wie QHash seine interne Hash-Tabelle nicht vergrößern/verkleinern muss. Die Verwendung eines Iterators nach einer Rehashing-Operation führt zu undefiniertem Verhalten.
Wenn Sie Iteratoren über einen langen Zeitraum aufbewahren müssen, empfehlen wir Ihnen, eher QMap als QHash zu verwenden.
Warnung: Iteratoren auf implizit gemeinsam genutzten Containern funktionieren nicht genau wie STL-Iteratoren. Sie sollten es vermeiden, einen Container zu kopieren, während Iteratoren auf diesem Container aktiv sind. Für weitere Informationen lesen Sie Implizite gemeinsame Nutzung Iterator Problem.
Siehe auch QHash::const_iterator, QHash::key_iterator, und QHash::key_value_iterator.
Dokumentation der Mitgliedsfunktionen
[noexcept]
bool iterator::operator==(const QHash<Key, T>::const_iterator &other) const
[noexcept]
bool iterator::operator==(const QHash<Key, T>::iterator &other) const
Gibt true
zurück, wenn other auf dasselbe Element wie dieser Iterator zeigt; andernfalls wird false
zurückgegeben.
Siehe auch operator!=().
[noexcept]
bool iterator::operator!=(const QHash<Key, T>::const_iterator &other) const
[noexcept]
bool iterator::operator!=(const QHash<Key, T>::iterator &other) const
Gibt true
zurück, wenn other auf ein anderes Element als diesen Iterator zeigt; andernfalls wird false
zurückgegeben.
Siehe auch operator==().
[constexpr noexcept]
iterator::iterator()
Konstruiert einen uninitialisierten Iterator.
Funktionen wie key(), value() und operator++() dürfen nicht mit einem nicht initialisierten Iterator aufgerufen werden. Verwenden Sie operator=(), um ihm einen Wert zuzuweisen, bevor Sie ihn verwenden.
Siehe auch QHash::begin() und QHash::end().
[noexcept]
const Key &iterator::key() const
Gibt den Schlüssel des aktuellen Elements als konstante Referenz zurück.
Es gibt keine direkte Möglichkeit, den Schlüssel eines Elements durch einen Iterator zu ändern, obwohl dies durch den Aufruf von QHash::erase() gefolgt von QHash::insert() möglich ist.
Siehe auch value().
[noexcept]
T &iterator::value() const
Gibt einen veränderbaren Verweis auf den Wert des aktuellen Elements zurück.
Sie können den Wert eines Elements ändern, indem Sie z. B. value() auf der linken Seite einer Zuweisung verwenden:
if (i.key() == "Hello") i.value() = "Bonjour";
Siehe auch key() und operator*().
[noexcept]
T &iterator::operator*() const
Gibt einen veränderbaren Verweis auf den Wert des aktuellen Elements zurück.
Dasselbe wie value().
Siehe auch key().
[noexcept]
QHash<Key, T>::iterator &iterator::operator++()
Der Präfix-Operator ++ (++i
) verschiebt den Iterator zum nächsten Element im Hash und gibt einen Iterator zum neuen aktuellen Element zurück.
Der Aufruf dieser Funktion auf QHash::end() führt zu undefinierten Ergebnissen.
[noexcept]
QHash<Key, T>::iterator iterator::operator++(int)
Dies ist eine überladene Funktion.
Der Postfix-Operator ++ (i++
) setzt den Iterator auf das nächste Element im Hash und gibt einen Iterator auf das zuvor aktuelle Element zurück.
[noexcept]
T *iterator::operator->() const
Gibt einen Zeiger auf den Wert des aktuellen Elements zurück.
Siehe auch value().
© 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.