Spec-Zone.ru › Qt 5.9

Класс QMutableSetIterator

Класс QMutableSetIterator предоставляет итератор типа Java для QSet. Подробнее...

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

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

QMutableSetIterator(QSet<T> &set)
bool findNext(const T &value)
bool findPrevious(const T &value)
bool hasNext() const
bool hasPrevious() const
const T & next()
const T & peekNext() const
const T & peekPrevious() const
const T & previous()
void remove()
void toBack()
void toFront()
const T & value() const
QMutableSetIterator & operator=(QSet<T> &set)

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

Класс QMutableSetIterator предоставляет итератор типа Java для QSet.

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

QMutableSetIterator<T> позволяет перебирать QSet<T> и удалять элементы из набора во время перебора. Если вы не хотите изменять набор (или у вас есть константный QSet), используйте немного более быстрый QSetIterator<T> вместо этого.

Конструктор QMutableSetIterator принимает QSet в качестве аргумента. После создания итератор находится в самом начале набора (перед первым элементом). Вот как итерироваться по всем элементам последовательно:

QSet<float> set;
...
QMutableSetIterator<float> i(set);
while (i.hasNext())
    qDebug() << i.next();

Функция next() возвращает следующий элемент в наборе и перемещает итератор. В отличие от итераторов в стиле STL, итераторы в стиле Java указывают между элементами, а не непосредственно на элементы. Первый вызов next() перемещает итератор в положение между первым и вторым элементом и возвращает первый элемент; второй вызов next() перемещает итератор в положение между вторым и третьим элементом, возвращая второй элемент; и так далее.

Вот как итерироваться по элементам в обратном порядке:

QMutableSetIterator<float> i(set);
i.toBack();
while (i.hasPrevious())
    qDebug() << i.previous();

Если вы хотите удалить элементы во время перебора набора, используйте remove().

Только один изменяемый итератор может быть активен для данного набора в любое время. Кроме того, никакие изменения не должны вноситься непосредственно в набор во время активности итератора (в отличие от использования итератора), так как это может сделать итератор недействительным и привести к неопределенному поведению.

См. также QSetIterator и QSet::iterator.

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

QMutableSetIterator::QMutableSetIterator(QSet<T> &set)

Создает итератор для обхода set. Итератор устанавливается в начало набора (перед первым элементом).

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

bool QMutableSetIterator::findNext(const T &value)

Ищет value, начиная с текущей позиции итератора вперед. Возвращает true, если value найдено; в противном случае возвращает false.

После вызова, если value был найден, итератор позиционируется сразу после совпадающего элемента; в противном случае итератор позиционируется в конце контейнера.

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

bool QMutableSetIterator::findPrevious(const T &value)

Ищет value, начиная с текущей позиции итератора назад. Возвращает true, если value найдено; в противном случае возвращает false.

После вызова, если value был найден, итератор позиционируется сразу перед совпадающим элементом; в противном случае итератор позиционируется в начале контейнера.

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

bool QMutableSetIterator::hasNext() const

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

См. также hasPrevious() и next().

bool QMutableSetIterator::hasPrevious() const

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

См. также hasNext() и previous().

const T &QMutableSetIterator::next()

Возвращает следующий элемент и перемещает итератор на одну позицию вперед.

Вызов этой функции для итератора, находящегося в конце контейнера, приводит к неопределенным результатам.

См. также hasNext(), peekNext() и previous().

const T &QMutableSetIterator::peekNext() const

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

Вызов этой функции для итератора, находящегося в конце контейнера, приводит к неопределенным результатам.

См. также hasNext(), next() и peekPrevious().

const T &QMutableSetIterator::peekPrevious() const

Возвращает предыдущий элемент без перемещения итератора.

Вызов этой функции для итератора, находящегося в начале контейнера, приводит к неопределенным результатам.

См. также hasPrevious(), previous() и peekNext().

const T &QMutableSetIterator::previous()

Возвращает предыдущий элемент и перемещает итератор назад на одну позицию.

Вызов этой функции для итератора, находящегося в начале контейнера, приводит к неопределенным результатам.

См. также hasPrevious(), peekPrevious() и next().

void QMutableSetIterator::remove()

Удаляет последний элемент, который был пропущен с помощью одной из функций обхода (next(), previous(), findNext(), findPrevious()).

Пример:

QMutableSetIterator<int> i(set);
while (i.hasNext()) {
    int val = i.next();
    if (val < -32768 || val > 32767)
        i.remove();
}

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

void QMutableSetIterator::toBack()

Перемещает итератор в конец контейнера (после последнего элемента).

См. также toFront() и previous().

void QMutableSetIterator::toFront()

Перемещает итератор в начало контейнера (перед первым элементом).

См. также toBack() и next().

const T &QMutableSetIterator::value() const

Возвращает значение последнего элемента, который был пропущен при использовании одной из функций обхода (next(), previous(), findNext(), findPrevious()).

После вызова next() или findNext(), значение value() эквивалентно peekPrevious(). После вызова previous() или findPrevious(), значение value() эквивалентно peekNext().

QMutableSetIterator &QMutableSetIterator::operator=(QSet<T> &set)

Устанавливает итератор для работы с set. Итератор устанавливается в начало множества (перед первым элементом).

См. также toFront() и toBack().

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

Spec-Zone.ru

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