Spec-Zone.ru › Qt 5.12

Класс iterator

(QList::iterator)

Класс QList::iterator предоставляет итератор в стиле STL для неконстантного доступа к элементам QList и QQueue. Подробнее...

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

Типы публичного доступа

typedef iterator_category

Функции публичного доступа

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

Публичные переменные

QList::Node * i

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

Класс QList::iterator предоставляет итератор в стиле STL для неконстантного доступа к элементам QList и QQueue.

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

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

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

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

QList<QString>::iterator i;
for (i = list.begin(); i != list.end(); ++i)
    cout << *i << endl;

Рассмотрим несколько примеров использования QList::iterator, которые недоступны с QList::const_iterator. Вот пример, увеличивающий каждое значение в QList<int> на 2:

QList<int>::iterator i;
for (i = list.begin(); i != list.end(); ++i)
    *i += 2;

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

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

QList<QWidget *> list;
...
qDeleteAll(list.begin(), list.end());

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

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

См. также QList::const_iterator и QMutableListIterator.

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

typedef iterator::iterator_category

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

iterator::iterator()

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

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

См. также QList::begin() и QList::end().

iterator::iterator(const iterator &other)

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

T &iterator::operator*() const

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

Вы можете изменить значение элемента, используя operator*() в левой части присваивания, например:

if (*it == "Hello")
    *it = "Bonjour";

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

iterator iterator::operator+(iterator::difference_type j) const

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

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

iterator &iterator::operator++()

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

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

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

iterator iterator::operator++(int)

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

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

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

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

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

iterator iterator::operator-(iterator::difference_type j) const

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

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

int iterator::operator-(iterator other) const

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

iterator &iterator::operator--()

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

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

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

iterator iterator::operator--(int)

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

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

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

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

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

T *iterator::operator->() const

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

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

T &iterator::operator[](iterator::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/qt-5.12/qlist-iterator.html

Spec-Zone.ru

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