Класс const_iterator
класс QLinkedList::const_iteratorКласс QLinkedList::const_iterator предоставляет итератор типа const для QLinkedList в стиле STL. Подробнее...
Открытые функции
| const_iterator(iterator other) | |
| const_iterator() | |
| 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 |
Подробное описание
QLinkedList содержит как итераторы в стиле STL, так и итераторы в стиле Java. Итераторы в стиле STL более низкого уровня и их использование более сложно; с другой стороны, они немного быстрее, и для разработчиков, уже знакомых со STL, имеют преимущество в том, что они понятны.
QLinkedList<T>::const_iterator позволяет итерироваться по QLinkedList<T>. Если вы хотите изменить QLinkedList во время итерации, необходимо использовать QLinkedList::iterator вместо этого. В целом, рекомендуется использовать QLinkedList::const_iterator и с неконстантной QLinkedList, если только вы не нуждаетесь в изменении QLinkedList через итератор. Константные итераторы немного быстрее и могут улучшить читаемость кода.
По умолчанию конструктор QLinkedList::const_iterator создает неинициализированный итератор. Необходимо инициализировать его с помощью функции, такой как QLinkedList::constBegin(), QLinkedList::constEnd() или QLinkedList::insert() перед началом итерации. Вот типичный цикл, который выводит все элементы, хранящиеся в списке:
QLinkedList<QString> list;
list.append("January");
list.append("February");
...
list.append("December");
QLinkedList<QString>::const_iterator i;
for (i = list.constBegin(); i != list.constEnd(); ++i)
cout << *i << Qt::endl; Итераторы в стиле STL могут использоваться в качестве аргументов для общих алгоритмов. Например, вот как найти элемент в списке:
QLinkedList<QString> list;
...
QLinkedList<QString>::const_iterator it = std::find(list.constBegin(),
list.constEnd(), "Joel");
if (it != list.constEnd())
cout << "Found Joel" << Qt::endl; Несколько итераторов могут использоваться для одного и того же списка. Если вы добавляете элементы в список, существующие итераторы останутся валидными. Если вы удаляете элементы из списка, итераторы, указывающие на удалённые элементы, станут висячими (dangling) итераторами.
Предупреждение: Итераторы неявно разделяемых контейнеров не работают точно так же, как итераторы STL. Необходимо избегать копирования контейнера, пока активны итераторы для этого контейнера. Для получения дополнительной информации, см. Проблема итераторов при неявном совместном использовании.
См. также QLinkedList::iterator и QLinkedListIterator.
Документация по функциям-членам
const_iterator::const_iterator(iterator other)
Создаёт копию other.
const_iterator::const_iterator()
Создаёт неинициализированный итератор.
Функции, такие как operator*() и operator++(), не должны вызываться для неинициализированного итератора. Используйте operator=() для присваивания значения перед его использованием.
См. также QLinkedList::constBegin() и QLinkedList::constEnd().
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+(int j) const
Возвращает итератор к элементу, расположенному на j позиций вперёд от этого итератора. (Если j отрицательно, итератор идёт назад.)
Эта операция может быть медленной для больших значений j.
См. также operator-().
const_iterator &const_iterator::operator++()
Префиксный оператор ++ (++it) перемещает итератор к следующему элементу в списке и возвращает итератор к новому текущему элементу.
Вызов этой функции для QLinkedList<T>::constEnd() приводит к неопределённым результатам.
См. также operator--().
const_iterator const_iterator::operator++(int)
Это перегруженная функция.
Постфиксный оператор ++ (it++) перемещает итератор к следующему элементу в списке и возвращает итератор к предыдущему текущему элементу.
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--()
Префиксный оператор -- (--it) делает предыдущий элемент текущим и возвращает итератор к новому текущему элементу.
Вызов этой функции для QLinkedList::begin() приводит к неопределённым результатам.
См. также operator++().
const_iterator const_iterator::operator--(int)
Это перегруженная функция.
Постфиксный оператор -- (it--) делает предыдущий элемент текущим и возвращает итератор к предыдущему текущему элементу.
const_iterator &const_iterator::operator-=(int j)
Перемещает итератор назад на j элементов. (Если j отрицательно, итератор идёт вперёд.)
Эта операция может быть медленной для больших значений j.
См. также operator+=() и operator-().
const T *const_iterator::operator->() const
Возвращает указатель на текущий элемент.
См. также operator*().
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-6.0/qlinkedlist-const-iterator.html