Spec-Zone.ru › Qt 5.6

Класс const_iterator

(QList::const_iterator)

Класс QList::const_iterator предоставляет итератор по умолчанию для QList и QQueue. Подробнее...

Заголовок: #include <const_iterator>
qmake: QT += core
  • Список всех членов, включая наследуемые

Типы

typedef iterator_category

Общедоступные функции

const_iterator()
const_iterator(const const_iterator &other)
const_iterator(const iterator &other)
bool operator!=(const const_iterator &other) const
const T & operator*() const
const_iterator operator+(difference_type j) const
const_iterator & operator++()
const_iterator operator++(int)
const_iterator & operator+=(difference_type j)
const_iterator operator-(difference_type j) const
int operator-(const_iterator other) const
const_iterator & operator--()
const_iterator operator--(int)
const_iterator & operator-=(difference_type j)
const T * operator->() const
bool operator<(const const_iterator &other) const
bool operator<=(const const_iterator &other) const
bool operator==(const const_iterator &other) const
bool operator>(const const_iterator &other) const
bool operator>=(const const_iterator &other) const
const T & operator[](difference_type j) const

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

Класс QList::const_iterator предоставляет итератор по умолчанию для QList и QQueue.

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

QList<T>::const_iterator позволяет итерироваться по QList<T> (или QQueue<T>). Если вы хотите изменить QList во время итерации, используйте QList::iterator вместо этого. В целом, рекомендуется использовать QList::const_iterator с неконстантной QList, если вам не нужно изменять QList через итератор. Константные итераторы немного быстрее и могут улучшить читаемость кода.

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

QList<QString> list;
list.append("January");
list.append("February");
...
list.append("December");

QList<QString>::const_iterator i;
for (i = list.constBegin(); i != list.constEnd(); ++i)
    cout << *i << endl;

Большинство функций QList принимают целочисленный индекс вместо итератора. По этой причине итераторы редко полезны в связи с QList. Одно место, где итераторы в стиле STL имеют смысл, — это аргументы для общих алгоритмов.

Например, вот как удалить все виджеты, хранящиеся в QList<QWidget *>:

QList<QWidget *> list;
...
qDeleteAll(list.constBegin(), list.constEnd());

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

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

См. также QList::iterator и QListIterator.

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

typedef const_iterator::iterator_category

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

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

const_iterator::const_iterator()

Конструирует неинициализированный итератор.

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

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

const_iterator::const_iterator(const const_iterator &other)

Конструирует копию other.

const_iterator::const_iterator(const iterator &other)

Конструирует копию other.

bool const_iterator::operator!=(const const_iterator &other) const

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

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

const T &const_iterator::operator*() const

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

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

const_iterator const_iterator::operator+(difference_type j) const

Возвращает итератор на элемент, находящийся на j позиций вперед от этого итератора. (Если j отрицательно, итератор перемещается назад.)

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

const_iterator &const_iterator::operator++()

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

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

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

const_iterator const_iterator::operator++(int)

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

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

const_iterator &const_iterator::operator+=(difference_type j)

Перемещает итератор на j элементов. (Если j отрицательно, итератор перемещается назад.)

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

const_iterator const_iterator::operator-(difference_type j) const

Возвращает итератор к элементу, находящемуся на j позиций назад от текущего итератора. (Если j отрицательно, итератор перемещается вперёд.)

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

int const_iterator::operator-(const_iterator other) const

Возвращает количество элементов между элементом, на который указывает other, и элементом, на который указывает этот итератор.

const_iterator &const_iterator::operator--()

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

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

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

const_iterator const_iterator::operator--(int)

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

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

const_iterator &const_iterator::operator-=(difference_type j)

Перемещает итератор назад на j элементов. (Если j отрицательно, итератор перемещается вперёд.)

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

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

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

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

bool const_iterator::operator<(const const_iterator &other) const

Возвращает true если элемент, на который указывает этот итератор, меньше элемента, на который указывает итератор other.

bool const_iterator::operator<=(const const_iterator &other) const

Возвращает true если элемент, на который указывает этот итератор, меньше или равен элементу, на который указывает итератор other.

bool const_iterator::operator==(const const_iterator &other) const

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

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

bool const_iterator::operator>(const const_iterator &other) const

Возвращает true если элемент, на который указывает этот итератор, больше элемента, на который указывает итератор other.

bool const_iterator::operator>=(const const_iterator &other) const

Возвращает true если элемент, на который указывает этот итератор, больше или равен элементу, на который указывает итератор other.

const T &const_iterator::operator[](difference_type j) const

Возвращает элемент по позиции *this + j.

Эта функция предоставляется для того, чтобы итераторы QList вели себя как указатели C++.

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

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

Spec-Zone.ru

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