Spec-Zone.ru › Qt 5.9

Класс 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API