QMultiHash::iterator Class
class QMultiHash::iteratorDie Klasse „ QMultiHash::iterator “ stellt einen nicht-konstanten Iterator im STL-Stil für „ QMultiHash “ bereit. Mehr...
Öffentliche Funktionen
| iterator() | |
| const Key & | key() const |
| T & | value() const |
| bool | operator!=(const QMultiHash<Key, T>::const_iterator &other) const |
| bool | operator!=(const QMultiHash<Key, T>::iterator &other) const |
| T & | operator*() const |
| QMultiHash<Key, T>::iterator & | operator++() |
| QMultiHash<Key, T>::iterator | operator++(int) |
| T * | operator->() const |
| bool | operator==(const QMultiHash<Key, T>::const_iterator &other) const |
| bool | operator==(const QMultiHash<Key, T>::iterator &other) const |
Ausführliche Beschreibung
QMultiHashMit <Key, T>::iterator können Sie eine „ QMultiHash “ durchlaufen und den Wert (jedoch nicht den Schlüssel) ändern, der einem bestimmten Schlüssel zugeordnet ist. Wenn Sie eine „const“- QMultiHash durchlaufen möchten, sollten Sie „ QMultiHash::const_iterator “ verwenden. Es empfiehlt sich generell, „ QMultiHash::const_iterator “ auch bei einer nicht-konstanten „ QMultiHash “ zu verwenden, es sei denn, Sie müssen die „ QMultiHash “ über den Iterator ändern. „const“-Iteratoren sind etwas schneller und können die Lesbarkeit des Codes verbessern.
Der Standardkonstruktor QMultiHash::iterator erstellt einen nicht initialisierten Iterator. Sie müssen ihn mithilfe einer QMultiHash -Funktion wie QMultiHash::begin(), QMultiHash::end() oder QMultiHash::find() initialisieren, bevor Sie mit der Iteration beginnen können. Hier ist eine typische Schleife, die alle in einem Hash gespeicherten (Schlüssel, Wert)-Paare 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(i.key()) << ": " << i.value() << endl;Im Gegensatz zu ` QMap`, das seine Elemente nach dem Schlüssel sortiert, speichert ` QMultiHash ` seine Elemente in beliebiger Reihenfolge.
Hier ist ein Beispiel, das jeden im „ QMultiHash “ gespeicherten Wert um 2 erhöht:
for (auto i = hash.begin(), end = hash.end(); i != end; ++i)
i.value() += 2;Um Elemente aus einem „ QMultiHash “ zu entfernen, können Sie „ erase_if “ (QMultiHash<Key, T> &map, Predicate pred) verwenden:
Es können mehrere Iteratoren für denselben Hash verwendet werden. Beachten Sie jedoch, dass jede direkt am Hash- QHash vorgenommene Änderung (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 dazu führen, dass alle Iteratoren, die auf den Hash verweisen, ungültig werden. Iteratoren bleiben nur so lange garantiert gültig, wie der „ QHash “ seine interne Hash-Tabelle nicht vergrößern oder verkleinern muss. Die Verwendung eines Iterators nach einer Neuhash-Operation führt zu undefiniertem Verhalten.
Wenn Sie Iteratoren über einen längeren Zeitraum beibehalten müssen, empfehlen wir, „ QMultiMap “ anstelle von „ 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. Weitere Informationen finden Sie unter „Problem mit Iteratoren bei impliziter gemeinsamen Nutzung“.
Siehe auch „ QMultiHash::const_iterator “, „ QMultiHash::key_iterator “ und „ QMultiHash::key_value_iterator “.
Dokumentation zu Mitgliedsfunktionen
[constexpr noexcept default] iterator::iterator()
Erzeugt einen nicht initialisierten Iterator.
Funktionen wie ` key()`, ` value()` und der Operator `++()` dürfen nicht auf einem nicht initialisierten Iterator aufgerufen werden. Verwenden Sie den Operator `=()`, um ihm vor der Verwendung einen Wert zuzuweisen.
Siehe auch QMultiHash::begin() und QMultiHash::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 über einen Iterator zu ändern, allerdings ist dies durch den Aufruf von ` QMultiHash::erase()` gefolgt von ` QMultiHash::insert()` möglich.
Siehe auch ` value()`.
[noexcept] T &iterator::value() const
Gibt eine veränderbare Referenz auf den Wert des aktuellen Elements zurück.
Sie können den Wert eines Elements ändern, indem Sie `value()` auf der linken Seite einer Zuweisung verwenden, zum Beispiel:
if (i.key() == "Hello")
i.value() = "Bonjour";Siehe auch „ key()“ und „ operator*()“.
[noexcept] bool iterator::operator!=(const QMultiHash<Key, T>::const_iterator &other) const
[noexcept] bool iterator::operator!=(const QMultiHash<Key, T>::iterator &other) const
Gibt „ true “ zurück, wenn „ other “ auf ein anderes Element als diesen Iterator verweist; andernfalls wird „ false “ zurückgegeben.
Siehe auch operator==().
[noexcept] T &iterator::operator*() const
Gibt eine veränderbare Referenz auf den Wert des aktuellen Elements zurück.
Entspricht der Funktion „ value()“.
Siehe auch „ key()“.
[noexcept] QMultiHash<Key, T>::iterator &iterator::operator++()
Der Präfix-Operator „++“ (++i) verschiebt den Iterator zum nächsten Element im Hash und gibt einen Iterator auf das neue aktuelle Element zurück.
Der Aufruf dieser Funktion auf ` QMultiHash::end()` führt zu undefinierten Ergebnissen.
[noexcept] QMultiHash<Key, T>::iterator iterator::operator++(int)
Der Postfix-Operator ++ (i++) verschiebt den Iterator zum nächsten Element im Hash und gibt einen Iterator auf das zuvor aktuelle Element zurück.
Dies ist eine überladene Funktion.
[noexcept] T *iterator::operator->() const
Gibt einen Zeiger auf den Wert des aktuellen Elements zurück.
Siehe auch „ value()“.
[noexcept] bool iterator::operator==(const QMultiHash<Key, T>::const_iterator &other) const
[noexcept] bool iterator::operator==(const QMultiHash<Key, T>::iterator &other) const
Gibt „ true “ zurück, wenn „ other “ auf dasselbe Element wie dieser Iterator verweist; andernfalls wird „ false “ zurückgegeben.
Siehe auch operator!=().
© 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.