Auf dieser Seite

QHash::key_iterator Class

class QHash::key_iterator

Die Klasse „ QHash::key_iterator “ stellt einen const-Iterator im STL-Stil für Schlüssel vom Typ „ QHash “ bereit. Mehr...

Öffentliche Funktionen

key_iterator()
QHash<Key, T>::const_iterator base() const
bool operator!=(QHash<Key, T>::key_iterator other) const
const Key &operator*() const
QHash<Key, T>::key_iterator &operator++()
QHash<Key, T>::key_iterator operator++(int)
const Key *operator->() const
bool operator==(QHash<Key, T>::key_iterator other) const

Ausführliche Beschreibung

QHash::key_iterator entspricht im Wesentlichen der Funktion „ QHash::const_iterator “, mit dem Unterschied, dass die Operatoren *() und ->() einen Schlüssel anstelle eines Werts zurückgeben.

In den meisten Fällen sollten „ QHash::iterator “ und „ QHash::const_iterator “ verwendet werden; Sie können den Schlüssel ganz einfach über den Aufruf von „ QHash::iterator::key():“ abrufen:

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 Interoperabilität zwischen den Schlüsseln von „ QHash “ und Algorithmen im STL-Stil zu gewährleisten, benötigen wir einen Iterator, der statt eines Werts auf einen Schlüssel verweist. Mit „ QHash::key_iterator “ können wir einen Algorithmus auf einen Bereich von Schlüsseln anwenden, ohne „ QHash::keys()“ aufrufen zu müssen, was ineffizient ist, da es eine „ QHash “-Iteration und Speicherzuweisung zur Erstellung eines temporären „ QList “ erfordert.

// Ineffizient, keys() ist rechenintensiv
QList<int> keys = hash.keys();
int numPrimes = std::count_if(keys.cbegin(), keys.cend(), isPrimeNumber);
qDeleteAll(hash2.keys());

// Effizient, keine Speicherzuweisung erforderlich
int primeNums = std::count_if(hash.keyBegin(), hash.keyEnd(), isPrimeNumber);
qDeleteAll(hash2.keyBegin(), hash2.keyEnd());

QHash::key_iterator ist „const“, kann der Schlüssel nicht geändert werden.

Der Standardkonstruktor von ` QHash::key_iterator ` erstellt einen nicht initialisierten Iterator. Sie müssen ihn mithilfe einer Funktion vom Typ ` QHash ` wie ` QHash::keyBegin()` oder ` QHash::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. Weitere Informationen finden Sie unter „Problem mit Iteratoren bei impliziter gemeinsamen Nutzung“.

Siehe auch „ QHash::const_iterator “ und „ QHash::iterator “.

Dokumentation zu Mitgliedsfunktionen

[noexcept default] key_iterator::key_iterator()

Erstellt standardmäßig eine Instanz von ` key_iterator`.

[noexcept] QHash<Key, T>::const_iterator key_iterator::base() const

Gibt das zugrunde liegende ` const_iterator ` zurück, auf dem dieses ` key_iterator ` basiert.

[noexcept] bool key_iterator::operator!=(QHash<Key, T>::key_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] const Key &key_iterator::operator*() const

Gibt den Schlüssel des aktuellen Elements zurück.

[noexcept] QHash<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 auf das neue aktuelle Element zurück.

Der Aufruf dieser Funktion auf ` QHash::keyEnd()` führt zu undefinierten Ergebnissen.

[noexcept] QHash<Key, T>::key_iterator key_iterator::operator++(int)

Der Postfix-Operator ++ (i++) verschiebt den Iterator zum nächsten Element im Hash und gibt einen Iterator zum vorherigen Element zurück.

Dies ist eine überladene Funktion.

[noexcept] const Key *key_iterator::operator->() const

Gibt einen Zeiger auf den Schlüssel des aktuellen Elements zurück.

[noexcept] bool key_iterator::operator==(QHash<Key, T>::key_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.