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