key_iterator Class
class QMultiHash::key_iteratorDie Klasse QMultiHash::key_iterator bietet einen STL-ähnlichen Konst-Iterator für QMultiHash Schlüssel. Mehr...
Öffentliche Funktionen
QMultiHash<Key, T>::const_iterator | base() const |
bool | operator!=(QMultiHash<Key, T>::key_iterator other) const |
const Key & | operator*() const |
QMultiHash<Key, T>::key_iterator & | operator++() |
QMultiHash<Key, T>::key_iterator | operator++(int) |
const Key * | operator->() const |
bool | operator==(QMultiHash<Key, T>::key_iterator other) const |
Detaillierte Beschreibung
QMultiHash::key_iterator ist im Wesentlichen dasselbe wie QMultiHash::const_iterator mit dem Unterschied, dass operator*() und operator->() einen Schlüssel statt eines Wertes zurückgeben.
Für die meisten Verwendungszwecke sollten QMultiHash::iterator und QMultiHash::const_iterator verwendet werden, auf den Schlüssel kann man leicht durch den Aufruf von QMultiHash::iterator::key() zugreifen:
for (auto it = hash.cbegin(), end = hash.cend(); it != end; ++it) { cout << "The key: " << it.key() << endl; cout << "The value: " << qPrintable(it.value()) << endl; cout << "Also the value: " << qPrintable(*it) << endl; }
Um jedoch eine Interoperabilität zwischen den Schlüsseln von QMultiHash und STL-artigen Algorithmen zu erreichen, benötigen wir einen Iterator, der auf einen Schlüssel statt auf einen Wert dereferenziert. Mit QMultiHash::key_iterator können wir einen Algorithmus auf einen Bereich von Schlüsseln anwenden, ohne QMultiHash::keys() aufrufen zu müssen, was ineffizient ist, da es eine QMultiHash Iteration und eine Speicherzuweisung kostet, um eine temporäre QList zu erstellen.
// Ineffizient, keys() ist teuerQList<int> keys = hash.keys();int numPrimes = std::count_if(keys.cbegin(), keys.cend(), isPrimeNumber);qDeleteAll(hash2.keys()); // Effizient, keine Speicherzuweisung erforderlichint numPrimes = std::count_if(hash.keyBegin(), hash.keyEnd(), isPrimeNumber);qDeleteAll(hash2.keyBegin(), hash2.keyEnd());
QMultiHash::key_iterator const ist, ist es nicht möglich, den Schlüssel zu ändern.
Der Standardkonstruktor QMultiHash::key_iterator erzeugt einen nicht initialisierten Iterator. Sie müssen ihn mit einer QMultiHash Funktion wie QMultiHash::keyBegin() oder QMultiHash::keyEnd() initialisieren.
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 QMultiHash::const_iterator und QMultiHash::iterator.
Dokumentation der Mitgliedsfunktionen
[noexcept]
QMultiHash<Key, T>::const_iterator key_iterator::base() const
Gibt die zugrunde liegende const_iterator zurück, auf der diese key_iterator basiert.
[noexcept]
bool key_iterator::operator!=(QMultiHash<Key, T>::key_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==().
[noexcept]
const Key &key_iterator::operator*() const
Gibt den Schlüssel des aktuellen Elements zurück.
[noexcept]
QMultiHash<Key, T>::key_iterator &key_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 QMultiHash::keyEnd() führt zu undefinierten Ergebnissen.
[noexcept]
QMultiHash<Key, T>::key_iterator key_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 vorherige Element zurück.
[noexcept]
const Key *key_iterator::operator->() const
Gibt einen Zeiger auf den Schlüssel des aktuellen Elements zurück.
[noexcept]
bool key_iterator::operator==(QMultiHash<Key, T>::key_iterator other) const
Gibt true
zurück, wenn other auf dasselbe Element wie dieser Iterator 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.