Класс key_iterator
Класс key_iterator объявлен в классе QHash.Класс QHash::key_iterator предоставляет итератор в стиле STL для ключей QHash и QMultiHash. Подробнее...
Этот класс был представлен в Qt 5.6.
Открытые функции
| const_iterator | base() const |
| bool | operator!=(key_iterator other) const |
| const Key & | operator*() const |
| key_iterator & | operator++() |
| key_iterator | operator++(int) |
| key_iterator & | operator--() |
| key_iterator | operator--(int) |
| const Key * | operator->() const |
| bool | operator==(key_iterator other) const |
Подробное описание
QHash::key_iterator по сути такой же, как QHash::const_iterator, с той разницей, что operator*() и operator->() возвращают ключ вместо значения.
Для большинства случаев следует использовать QHash::iterator и QHash::const_iterator, так как вы можете легко получить доступ к ключу, вызвав QHash::iterator::key():
for (QHash<int, QString>::const_iterator it = hash.cbegin(), end = hash.cend(); it != end; ++it) {
cout << "The key: " << it.key() << endl
cout << "The value: " << it.value() << endl;
cout << "Also the value: " << (*it) << endl;
} Однако, для обеспечения совместимости между ключами QHash и алгоритмами в стиле STL нам нужен итератор, который обращается к ключу, а не к значению. С помощью QHash::key_iterator мы можем применить алгоритм к диапазону ключей без необходимости вызывать QHash::keys(), что неэффективно, так как это требует одной итерации QHash и выделения памяти для создания временного 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 является константным, изменение ключа невозможно.
Конструктор QHash::key_iterator по умолчанию создает неинициализированный итератор. Необходимо инициализировать его с помощью функции QHash, например, QHash::keyBegin() или QHash::keyEnd().
Предупреждение: Итераторы на неявно разделяемых контейнерах не работают точно как итераторы STL. Следует избегать копирования контейнера, пока активны итераторы на этом контейнере. Для получения дополнительной информации прочитайте проблему итератора неявно разделяемого контейнера.
См. также QHash::const_iterator и QHash::iterator.
Документация по членам-функциям
const_iterator key_iterator::base() const
Возвращает базовый const_iterator, на котором основан данный key_iterator.
bool key_iterator::operator!=(key_iterator other) const
Возвращает true если other указывает на другой элемент, чем данный итератор; в противном случае возвращает false.
См. также operator==().
const Key &key_iterator::operator*() const
Возвращает ключ текущего элемента.
key_iterator &key_iterator::operator++()
Префиксный оператор ++ (++i) перемещает итератор к следующему элементу в хэше и возвращает итератор на новый текущий элемент.
Вызов этой функции для QHash::keyEnd() приводит к неопределенным результатам.
См. также operator--().
key_iterator key_iterator::operator++(int)
Это перегруженная функция.
Постфиксный оператор ++ (i++) перемещает итератор к следующему элементу в хэше и возвращает итератор на предыдущий элемент.
key_iterator &key_iterator::operator--()
Префиксный оператор -- (--i) делает предыдущий элемент текущим и возвращает итератор, указывающий на новый текущий элемент.
Вызов этой функции для QHash::keyBegin() приводит к неопределенным результатам.
См. также operator++().
key_iterator key_iterator::operator--(int)
Это перегруженная функция.
Постфиксный оператор -- (i--) делает предыдущий элемент текущим и возвращает итератор, указывающий на предыдущий элемент.
const Key *key_iterator::operator->() const
Возвращает указатель на ключ текущего элемента.
bool key_iterator::operator==(key_iterator other) const
Возвращает true если other указывает на тот же элемент, что и этот итератор; в противном случае возвращает false.
См. также operator!=().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qhash-key-iterator.html