Spec-Zone.ru › Qt 5.6

Класс 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> и удалять элементы из множества во время итерации. Если вы не хотите изменять множество (или у вас есть константное множество), используйте немного более быстрый 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/archives/qt-5.6/qmutablesetiterator.html

Spec-Zone.ru

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