Auf dieser Seite

QMultiHash::iterator Class

class QMultiHash::iterator

Die 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:

erase_if(hash, [](const QHash<QString, int>::iterator it) { return it.value() > 10; });

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.