Spec-Zone.ru › Qt 6.1

Класс const_iterator

класс QMultiMap::const_iterator

Класс QMultiMap::const_iterator предоставляет итератор const типа STL для QMultiMap. Подробнее...

  • Список всех членов, включая унаследованные

Открытые типы

iterator_category

Открытые функции

const_iterator(const iterator &other)
const_iterator()
const Key & key() const
const T & value() const
const T & operator*() const
const_iterator & operator++()
const_iterator operator++(int)
const_iterator & operator--()
const_iterator operator--(int)
const T * operator->() const

Связанные нечлены

bool operator!=(const const_iterator &lhs, const const_iterator &rhs)
bool operator==(const const_iterator &lhs, const const_iterator &rhs)

Подробное описание

QMultiMap имеет как итераторы в стиле STL, так и итераторы в стиле Java. Итераторы в стиле STL более низкого уровня и более громоздкие в использовании; с другой стороны, они немного быстрее, а для разработчиков, знакомых со STL, имеют преимущество в том, что они знакомы.

QMultiMap<Key, T>::const_iterator позволяет итерироваться по QMultiMap. Если вы хотите изменить QMultiMap во время итерации, вам необходимо использовать QMultiMap::iterator вместо этого. В общем, рекомендуется использовать QMultiMap::const_iterator и на не-const QMultiMap, если только вам не нужно изменять QMultiMap с помощью итератора. Const-итераторы немного быстрее и могут улучшить читаемость кода.

Конструктор по умолчанию QMultiMap::const_iterator создает неинициализированный итератор. Необходимо его инициализировать с помощью функции QMultiMap, например, QMultiMap::constBegin(), QMultiMap::constEnd() или QMultiMap::find(), прежде чем вы сможете начать итерацию. Вот типичный цикл, который выводит все пары (ключ, значение), хранящиеся в карте:

QMultiMap<QString, int> multi;
multimap.insert("January", 1);
multimap.insert("February", 2);
...
multimap.insert("December", 12);

QMultiMap<QString, int>::const_iterator i;
for (i = multimap.constBegin(); i != multimap.constEnd(); ++i)
    cout << i.key() << ": " << i.value() << Qt::endl;

В отличие от QMultiHash, который хранит свои элементы в произвольном порядке, QMultiMap хранит свои элементы в упорядоченном виде по ключу. Элементы с одинаковым ключом будут появляться последовательно, от последнего до первого вставленного значения.

Несколько итераторов могут использоваться в одной и той же многократной карте. Если вы добавляете элементы в карту, существующие итераторы останутся действительными. Если вы удаляете элементы из карты, итераторы, которые указывают на удалённые элементы, станут висячими итераторами.

Предупреждение: Итераторы на неявно-разделяемых контейнерах не работают точно как итераторы STL. Следует избегать копирования контейнера, пока итераторы активны на этом контейнере. Для получения более подробной информации прочитайте проблему итератора неявного совместного использования.

См. также QMultiMap::iterator, QMultiMap::key_iterator и QMultiMapIterator.

Документация по типам членов

[alias] const_iterator::iterator_category

Синоним для std::bidirectional_iterator_tag, указывающий, что этот итератор является двунаправленным.

Документация по функциям-членам

const_iterator::const_iterator(const iterator &other)

Создаёт копию other.

const_iterator::const_iterator()

Создаёт неинициализированный итератор.

Функции, такие как key(), value() и operator++(), не должны вызываться на неинициализированном итераторе. Используйте operator=() для присвоения значения перед использованием.

См. также QMultiMap::constBegin() и QMultiMap::constEnd().

const Key &const_iterator::key() const

Возвращает ключ текущего элемента.

См. также value().

const T &const_iterator::value() const

Возвращает значение текущего элемента.

См. также key() и operator*().

const T &const_iterator::operator*() const

Возвращает значение текущего элемента.

То же самое, что и value().

См. также key().

const_iterator &const_iterator::operator++()

Префиксный оператор ++ (++i) перемещает итератор к следующему элементу в карте и возвращает итератор на новый текущий элемент.

Вызов этой функции для QMultiMap::end() приводит к неопределённым результатам.

См. также operator--().

const_iterator const_iterator::operator++(int)

Это перегруженная функция.

Постфиксный оператор ++ (i++) перемещает итератор к следующему элементу в карте и возвращает итератор на предыдущий текущий элемент.

const_iterator &const_iterator::operator--()

Префиксный оператор -- (--i) делает предыдущий элемент текущим и возвращает итератор, указывающий на новый текущий элемент.

Вызов этой функции для QMultiMap::begin() приводит к неопределённым результатам.

См. также operator++().

const_iterator const_iterator::operator--(int)

Это перегруженная функция.

Постфиксный оператор -- (i--) делает предыдущий элемент текущим и возвращает итератор, указывающий на предыдущий текущий элемент.

const T *const_iterator::operator->() const

Возвращает указатель на значение текущего элемента.

См. также value().

Связанные нечлены

bool operator!=(const const_iterator &lhs, const const_iterator &rhs)

Возвращает true если lhs указывает на другой элемент, чем итератор rhs; в противном случае возвращает false.

См. также operator==().

bool operator==(const const_iterator &lhs, const const_iterator &rhs)

Возвращает true если lhs указывает на тот же элемент, что и итератор rhs; в противном случае возвращает false.

См. также operator!=().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qmultimap-const-iterator.html

Spec-Zone.ru

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