Класс const_iterator
(QHash::const_iterator)Класс QHash::const_iterator предоставляет итератор типа const для QHash и QMultiHash в стиле STL. Подробнее...
| Заголовок: | #include <const_iterator> |
| qmake: | QT += core |
Открытые функции
| const_iterator() | |
| const_iterator(const iterator &other) | |
| const Key & | key() const |
| const T & | value() const |
| bool | operator!=(const const_iterator &other) const |
| const T & | operator*() const |
| const_iterator | operator+(int j) const |
| const_iterator & | operator++() |
| const_iterator | operator++(int) |
| const_iterator & | operator+=(int j) |
| const_iterator | operator-(int j) const |
| const_iterator & | operator--() |
| const_iterator | operator--(int) |
| const_iterator & | operator-=(int j) |
| const T * | operator->() const |
| bool | operator==(const const_iterator &other) const |
Подробное описание
Класс QHash::const_iterator предоставляет итератор типа const для QHash и QMultiHash в стиле STL.
QHash поддерживает итераторы в стиле STL и Java. Итераторы в стиле STL более низкого уровня и более сложны в использовании, но немного быстрее; для разработчиков, знакомых со STL, они обладают преимуществом благодаря знакомой структуре.
QHash<Key, T>::const_iterator позволяет перебирать QHash (или QMultiHash). Если требуется изменять QHash во время перебора, необходимо использовать QHash::iterator вместо этого. В целом рекомендуется использовать QHash::const_iterator с не-константным QHash, если не требуется изменять QHash через итератор. Константные итераторы немного быстрее и повышают читаемость кода.
Конструктор QHash::const_iterator по умолчанию создает неинициализированный итератор. Необходимо инициализировать его с помощью функции QHash, например, QHash::constBegin(), QHash::constEnd() или QHash::find(), перед началом перебора. Вот типичный цикл, который выводит все пары (ключ, значение) в хэше:
QHash<QString, int> hash;
hash.insert("January", 1);
hash.insert("February", 2);
...
hash.insert("December", 12);
QHash<QString, int>::const_iterator i;
for (i = hash.constBegin(); i != hash.constEnd(); ++i)
cout << i.key() << ": " << i.value() << endl; В отличие от QMap, который сортирует элементы по ключу, QHash хранит элементы в произвольном порядке. Единственная гарантия заключается в том, что элементы с одинаковым ключом (вставленные с помощью QHash::insertMulti()) будут появляться последовательно, от самого недавно вставленного до самого старого.
Можно использовать несколько итераторов для одного хэша. Однако следует учитывать, что любые изменения, вносимые непосредственно в QHash, могут существенно изменить порядок хранения элементов в хэше, поскольку они могут привести к перерасчёту внутренней структуры данных QHash. Если требуется сохранить итераторы на длительный срок, рекомендуется использовать QMap вместо QHash.
Предупреждение: Итераторы для неявно разделяемых контейнеров не работают точно так же, как итераторы STL. Следует избегать копирования контейнера, когда активны итераторы на этом контейнере. Для получения дополнительной информации см. Проблема итераторов неявного разделения.
См. также QHash::iterator и QHashIterator.
Документация функций-членов
const_iterator::const_iterator()
Создает неинициализированный итератор.
Функции, такие как key(), value() и operator++(), не должны вызываться для неинициализированного итератора. Используйте operator=() для присвоения значения перед использованием.
См. также QHash::constBegin() и QHash::constEnd().
const_iterator::const_iterator(const iterator &other)
Создает копию other.
const Key &const_iterator::key() const
Возвращает ключ текущего элемента.
См. также value().
const T &const_iterator::value() const
Возвращает значение текущего элемента.
См. также key() и operator*().
bool const_iterator::operator!=(const const_iterator &other) const
Возвращает true , если other указывает на другой элемент, чем этот итератор; в противном случае возвращает false.
См. также operator==().
const T &const_iterator::operator*() const
Возвращает значение текущего элемента.
То же, что и value().
См. также key().
const_iterator const_iterator::operator+(int j) const
Возвращает итератор к элементу, расположенному на j позиций вперёд от текущего итератора. (Если j отрицательное, итератор перемещается назад.)
Эта операция может быть медленной для больших значений j.
См. также operator-().
const_iterator &const_iterator::operator++()
Префиксный оператор ++ (++i) перемещает итератор к следующему элементу в хэше и возвращает итератор на новый текущий элемент.
Вызов этой функции для QHash::end() приводит к неопределённым результатам.
См. также operator--().
const_iterator const_iterator::operator++(int)
Это перегруженная функция.
Постфиксный оператор ++ (i++) перемещает итератор к следующему элементу в хэше и возвращает итератор на ранее текущий элемент.
const_iterator &const_iterator::operator+=(int j)
Перемещает итератор на j элементов вперёд. (Если j отрицательное, итератор перемещается назад.)
Эта операция может быть медленной для больших значений j.
См. также operator-=() и operator+().
const_iterator const_iterator::operator-(int j) const
Возвращает итератор к элементу, расположенному на j позиций назад от текущего итератора. (Если j отрицательное, итератор перемещается вперёд.)
Эта операция может быть медленной для больших значений j.
См. также operator+().
const_iterator &const_iterator::operator--()
Префиксный оператор -- (--i) делает предыдущий элемент текущим и возвращает итератор, указывающий на новый текущий элемент.
Вызов этой функции для QHash::begin() приведёт к неопределённым результатам.
См. также operator++().
const_iterator const_iterator::operator--(int)
Это перегруженная функция.
Постфиксный оператор -- (i--) делает предыдущий элемент текущим и возвращает итератор, указывающий на ранее текущий элемент.
const_iterator &const_iterator::operator-=(int j)
Перемещает итератор назад на j элементов. (Если j отрицательное, итератор перемещается вперёд.)
Эта операция может быть медленной для больших значений j.
См. также operator+=() и operator-().
const T *const_iterator::operator->() const
Возвращает указатель на значение текущего элемента.
См. также value().
bool const_iterator::operator==(const const_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.9/qhash-const-iterator.html