Описание класса QVectorIterator
|
QVectorIterator ( const QVector<T> & vector ) | |
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 | toBack () |
void | toFront () |
QVectorIterator & | operator= ( const QVector<T> & vector ) |
Класс QVectorIterator предоставляет константный итератор в стиле Java для QVector и QStack.
QVector имеет как итераторы в стиле Java, так и итераторы в стиле STL. Итераторы в стиле Java более высокоуровневые и простые в использовании, чем итераторы в стиле STL; с другой стороны, они несколько менее эффективны.
Альтернативой использованию итераторов является использование индекса позиций. Большинство функций-членов QVector принимает индекс в качестве первого параметра, делая возможным доступ, вставку и удаление элементов без использования итераторов.
QVectorIterator<T> позволяет вам перебирать QVector<T> (или QStack<T>). Если вам требуется изменять вектор во время итерации, то используйте вместо этого QMutableVectorIterator<T>.
Конструктор QVectorIterator принимает QVector в качестве параметра. После создания итератор указывает в самое начало вектора (перед первым элементом). Вот, как последовательно перебрать все элементы:
QVector<float> vector; ... QVectorIterator<float> i(vector); while (i.hasNext()) qDebug() << i.next();
Функция next() возвращает следующий элемент в векторе и перемещает итератор. В отличие от итераторов в стиле STL, итераторы в стиле Java указывают между элементами, а не на сами элементы. Первый вызов next() перемещает итератор в позицию между первым и вторым элементами и возвращает первый элемент; второй вызов next() перемещает итератор в позицию между вторым и третьим элементами, возвращая второй элемент; и т.д.
Вот, как последовательно перебрать все элементы в обратном порядке:
QVectorIterator<float> i(vector); i.toBack(); while (i.hasPrevious()) qDebug() << i.previous();
Если вы хотите найти все вхождения определённого значения, используйте findNext() или findPrevious() в цикле.
Несколько итераторов может быть использовано на одном и том же векторе. Если вектор изменяется в то время, как активен QVectorIterator, то QVectorIterator будет продолжать итерацию над оригинальным вектором, игнорируя изменённую копию.
Смотрите также QMutableVectorIterator и QVector::const_iterator.
Создаёт итератор для обхода вектора vector. Итератор устанавливается впереди вектора (перед первым элементом).
Смотрите также operator=().
Ищет вперед значение value, начиная с текущей позиции итератора. Возвращает true, если value найдено; в противном случае возвращает false.
После вызова, если значение value было найдено, итератор устанавливается сразу после соответствующего элемента; в противном случае итератор устанавливается позади контейнера.
Смотрите также findPrevious().
Ищет назад значение value, начиная с текущей позиции итератора. Возвращает true, если value найдено; в противном случае возвращает false.
После вызова, если значение value было найдено, итератор устанавливается сразу перед соответствующим элементом; в противном случае итератор устанавливается перед контейнером.
Смотрите также findNext().
Возвращает true, если есть хотя бы один элемент впереди итератора, т.е. итератор не позади контейнера; в противном случае возвращает false.
Смотрите также hasPrevious() и next().
Возвращает true, если есть хотя бы один элемент позади итератора, т.е. итератор не впереди контейнера; в противном случае возвращает false.
Смотрите также hasNext() и previous().
Возвращает следующий элемент и перемещает итератор на одну позицию.
Вызов этой функции на итераторе, расположенном позади контейнера, приводит к неопределённым результатам.
Смотрите также hasNext(), peekNext() и previous().
Возвращает следующий элемент без перемещения итератора.
Вызов этой функции на итераторе, расположенном позади контейнера, приводит к неопределённым результатам.
Смотрите также hasNext(), next() и peekPrevious().
Возвращает предыдущий элемент без перемещения итератора.
Вызов этой функции на итераторе, расположенном перед контейнером, приводит к неопределённым результатам.
Смотрите также hasPrevious(), previous() и peekNext().
Возвращает предыдущий элемент и перемещает итератор на одну позицию назад.
Вызов этой функции на итераторе, расположенном перед контейнером, приводит к неопределённым результатам.
Смотрите также hasPrevious(), peekPrevious() и next().
Перемещает итератор позади контейнера (после последнего элемента).
Смотрите также toFront() и previous().
Перемещает итератор впереди контейнера (перед первым элементом).
Смотрите также toBack() и next().
Заставляет итератор работать с вектором vector. Итератор устанавливается впереди вектора (перед первым элементом).
Смотрите также toFront() и toBack().
Авторские права © 2010 Nokia Corporation и/или её дочерние компании | Торговые марки | Qt 4.6.4 |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |