iterator Class
class QMultiMap::iteratorDie Klasse QMultiMap::iterator bietet einen STL-ähnlichen nicht-konstanten Iterator für QMultiMap. Mehr...
Öffentliche Typen
Öffentliche Funktionen
iterator() | |
const Key & | key() const |
T & | value() const |
T & | operator*() const |
QMultiMap<Key, T>::iterator & | operator++() |
QMultiMap<Key, T>::iterator | operator++(int) |
QMultiMap<Key, T>::iterator & | operator--() |
QMultiMap<Key, T>::iterator | operator--(int) |
T * | operator->() const |
Verwandte Nicht-Mitglieder
bool | operator!=(const QMultiMap<Key, T>::iterator &lhs, const QMultiMap<Key, T>::iterator &rhs) |
bool | operator==(const QMultiMap<Key, T>::iterator &lhs, const QMultiMap<Key, T>::iterator &rhs) |
Detaillierte Beschreibung
QMultiMap<Schlüssel, T>::iterator ermöglicht es, über eine QMultiMap zu iterieren und den Wert (aber nicht den Schlüssel) zu ändern, der unter einem bestimmten Schlüssel gespeichert ist. Wenn Sie über eine const QMultiMap iterieren wollen, sollten Sie QMultiMap::const_iterator verwenden. Es ist im Allgemeinen eine gute Praxis, QMultiMap::const_iterator auch für eine nicht-konstante QMultiMap zu verwenden, es sei denn, Sie müssen die QMultiMap durch den Iterator ändern. Konst-Iteratoren sind etwas schneller und können die Lesbarkeit des Codes verbessern.
Der Standard-Konstruktor QMultiMap::iterator erzeugt einen nicht initialisierten Iterator. Sie müssen ihn mit einer QMultiMap Funktion wie QMultiMap::begin(), QMultiMap::end() oder QMultiMap::find() initialisieren, bevor Sie mit der Iteration beginnen können. Hier ist eine typische Schleife, die alle in einer Map gespeicherten Paare (Schlüssel, Wert) ausgibt:
Im Gegensatz zu QMultiHash, das seine Elemente in beliebiger Reihenfolge speichert, speichert QMultiMap seine Elemente nach Schlüssel geordnet. Elemente, die den gleichen Schlüssel haben, erscheinen nacheinander, vom zuletzt eingefügten bis zum zuletzt eingefügten Wert.
Hier ein Beispiel, bei dem jeder in QMultiMap gespeicherte Wert um 2 erhöht wird:
for (auto it = multimap.begin(), end = multimap.end(); i != end; ++i) i.value() += 2;
Um Elemente aus einer QMultiMap zu entfernen, können Sie erase_if(QMultiMap<Key, T> &map, Predicate pred) verwenden:
Mehrere Iteratoren können auf dieselbe Map angewendet werden. Wenn Sie Elemente zur Map hinzufügen, bleiben die vorhandenen Iteratoren gültig. Wenn Sie Elemente aus der Map entfernen, werden Iteratoren, die auf die entfernten Elemente zeigen, zu Dangling-Iteratoren.
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 QMultiMap::const_iterator, QMultiMap::key_iterator, und QMultiMap::key_value_iterator.
Dokumentation der Mitgliedstypen
[alias]
iterator::iterator_category
Ein Synonym für std::bidirectional_iterator_tag, das anzeigt, dass dieser Iterator ein bidirektionaler Iterator ist.
Dokumentation der Mitgliedsfunktionen
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 QMultiMap::begin() und QMultiMap::end().
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, obwohl dies durch den Aufruf von QMultiMap::erase() gefolgt von QMultiMap::insert() möglich ist.
Siehe auch value().
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*().
T &iterator::operator*() const
Gibt einen veränderbaren Verweis auf den Wert des aktuellen Elements zurück.
Dasselbe wie value().
Siehe auch key().
QMultiMap<Key, T>::iterator &iterator::operator++()
Der Präfix-Operator ++
(++i
) bringt den Iterator zum nächsten Element in der Multimap weiter und gibt einen Iterator zum neuen aktuellen Element zurück.
Der Aufruf dieser Funktion auf QMultiMap::end() führt zu undefinierten Ergebnissen.
Siehe auch operator--().
QMultiMap<Key, T>::iterator iterator::operator++(int)
Dies ist eine überladene Funktion.
Der Postfix-Operator ++
(i++
) setzt den Iterator auf das nächste Element in der Multimap und gibt einen Iterator auf das zuvor aktuelle Element zurück.
QMultiMap<Key, T>::iterator &iterator::operator--()
Der Präfix-Operator --
(--i
) macht das vorhergehende Element aktuell und gibt einen Iterator zurück, der auf das neue aktuelle Element zeigt.
Der Aufruf dieser Funktion auf QMultiMap::begin() führt zu undefinierten Ergebnissen.
Siehe auch operator++().
QMultiMap<Key, T>::iterator iterator::operator--(int)
Dies ist eine überladene Funktion.
Der Postfix-Operator --
(i--
) macht das vorangehende Element aktuell und gibt einen Iterator zurück, der auf das zuvor aktuelle Element zeigt.
T *iterator::operator->() const
Gibt einen Zeiger auf den Wert des aktuellen Elements zurück.
Siehe auch value().
Verwandte Nicht-Mitglieder
bool operator==(const QMultiMap<Key, T>::iterator &lhs, const QMultiMap<Key, T>::iterator &rhs)
Gibt true
zurück, wenn lhs auf dasselbe Element wie der Iterator rhs zeigt; andernfalls wird false
zurückgegeben.
Siehe auch operator!=().
bool operator!=(const QMultiMap<Key, T>::iterator &lhs, const QMultiMap<Key, T>::iterator &rhs)
Gibt true
zurück, wenn lhs auf ein anderes Element als den Iterator rhs zeigt; andernfalls wird false
zurückgegeben.
Siehe auch operator==().
© 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.