The QHash::key_iterator class provides an STL-style const iterator for QHash and QMultiHash keys. More...
This class was introduced in Qt 5.6.
const_iterator | base() const |
bool | operator!=(key_iterator other) const |
const Key & | operator*() const |
key_iterator & | operator++() |
key_iterator | operator++(int) |
const Key * | operator->() const |
bool | operator==(key_iterator other) const |
QHash::key_iterator is essentially the same as QHash::const_iterator with the difference that operator*() and operator->() return a key instead of a value.
For most uses QHash::iterator and QHash::const_iterator should be used, you can easily access the key by calling QHash::iterator::key():
for (QHash<int, QString>::const_iterator it = hash.cbegin(), end = hash.cend(); it != end; ++it) { cout << "The key: " << it.key() << Qt::endl cout << "The value: " << it.value() << Qt::endl; cout << "Also the value: " << (*it) << Qt::endl; }
However, to have interoperability between QHash's keys and STL-style algorithms we need an iterator that dereferences to a key instead of a value. With QHash::key_iterator we can apply an algorithm to a range of keys without having to call QHash::keys(), which is inefficient as it costs one QHash iteration and memory allocation to create a temporary QList.
// Inefficient, keys() is expensive QList<int> keys = hash.keys(); int numPrimes = std::count_if(keys.cbegin(), keys.cend(), isPrimeNumber); qDeleteAll(hash2.keys()); // Efficient, no memory allocation needed int numPrimes = std::count_if(hash.keyBegin(), hash.keyEnd(), isPrimeNumber); qDeleteAll(hash2.keyBegin(), hash2.keyEnd());
QHash::key_iterator is const, it's not possible to modify the key.
The default QHash::key_iterator constructor creates an uninitialized iterator. You must initialize it using a QHash function like QHash::keyBegin() or QHash::keyEnd().
Warning: Iterators on implicitly shared containers do not work exactly like STL-iterators. You should avoid copying a container while iterators are active on that container. For more information, read Implicit sharing iterator problem.
See also QHash::const_iterator and QHash::iterator.
Returns the underlying const_iterator this key_iterator is based on.
Returns true
if other points to a different item than this iterator; otherwise returns false
.
See also operator==().
Returns the current item's key.
The prefix ++ operator (++i
) advances the iterator to the next item in the hash and returns an iterator to the new current item.
Calling this function on QHash::keyEnd() leads to undefined results.
See also operator--().
This is an overloaded function.
The postfix ++ operator (i++
) advances the iterator to the next item in the hash and returns an iterator to the previous item.
Returns a pointer to the current item's key.
Returns true
if other points to the same item as this iterator; otherwise returns false
.
See also operator!=().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qhash-key-iterator.html