Класс QMapIterator
Класс QMapIterator предоставляет итератор типа Java для QMap и QMultiMap. Подробнее...
| Заголовок: | #include <QMapIterator> |
| qmake: | QT += core |
Открытые функции
| QMapIterator(const QMap<Key, T> &map) | |
| bool | findNext(const T &value) |
| bool | findPrevious(const T &value) |
| bool | hasNext() const |
| bool | hasPrevious() const |
| const Key & | key() const |
| Item | next() |
| Item | peekNext() const |
| Item | peekPrevious() const |
| Item | previous() |
| void | toBack() |
| void | toFront() |
| const T & | value() const |
| QMapIterator & | operator=(const QMap<Key, T> &map) |
Подробное описание
Класс QMapIterator предоставляет итератор типа Java для QMap и QMultiMap.
QMap имеет итераторы как стиля Java, так и стиля STL. Итераторы стиля Java более высокого уровня и проще в использовании, чем итераторы стиля STL; с другой стороны, они немного менее эффективны.
QMapIterator<Key, T> позволяет перебирать QMap (или QMultiMap). Если вы хотите изменить карту во время итерации по ней, используйте QMutableMapIterator вместо этого.
Конструктор QMapIterator принимает QMap в качестве аргумента. После создания итератор находится в самом начале карты (перед первым элементом). Вот как итерироваться по всем элементам последовательно:
QMap<int, QWidget *> map;
...
QMapIterator<int, QWidget *> i(map);
while (i.hasNext()) {
i.next();
qDebug() << i.key() << ": " << i.value();
} Функция next() возвращает следующий элемент в карте и перемещает итератор. Функции key() и value() возвращают ключ и значение последнего пропущенного элемента.
В отличие от итераторов стиля STL, итераторы стиля Java указывают между элементами, а не непосредственно на элементы. Первый вызов next() перемещает итератор в позицию между первым и вторым элементом и возвращает первый элемент; второй вызов next() перемещает итератор в позицию между вторым и третьим элементом и так далее.
Вот как итерироваться по элементам в обратном порядке:
QMapIterator<int, QWidget *> i(map);
i.toBack();
while (i.hasPrevious()) {
i.previous();
qDebug() << i.key() << ": " << i.value();
} Если вы хотите найти все вхождения определенного значения, используйте findNext() или findPrevious() в цикле. Например:
QMapIterator<int, QWidget *> i(map);
while (i.findNext(widget)) {
qDebug() << "Found widget " << widget << " under key "
<< i.key();
} Несколько итераторов могут быть использованы с одной и той же картой. Если карта изменяется, когда активен QMapIterator, QMapIterator будет продолжать итерироваться по исходной карте, игнорируя изменённую копию.
См. также QMutableMapIterator и QMap::const_iterator.
Документация по функциям-членам
QMapIterator::QMapIterator(const QMap<Key, T> &map)
Создает итератор для обхода map. Итератор устанавливается в начало карты (перед первым элементом).
См. также operator=().
bool QMapIterator::findNext(const T &value)
Ищет value, начиная с текущей позиции итератора вперед. Возвращает true если пара (ключ, значение) со значением value найдена; в противном случае возвращает false.
После вызова, если value был найден, итератор размещается сразу после соответствующего элемента; в противном случае итератор размещается в конце контейнера.
См. также findPrevious().
bool QMapIterator::findPrevious(const T &value)
Ищет value, начиная с текущей позиции итератора назад. Возвращает true если пара (ключ, значение) со значением value найдена; в противном случае возвращает false.
После вызова, если value был найден, итератор размещается сразу перед соответствующим элементом; в противном случае итератор размещается в начале контейнера.
См. также findNext().
bool QMapIterator::hasNext() const
Возвращает true если за итератором есть хотя бы один элемент, т.е. итератор не находится в конце контейнера; в противном случае возвращает false.
См. также hasPrevious() и next().
bool QMapIterator::hasPrevious() const
Возвращает true если за итератором есть хотя бы один элемент, т.е. итератор не находится в начале контейнера; в противном случае возвращает false.
См. также hasNext() и previous().
const Key &QMapIterator::key() const
Возвращает ключ последнего элемента, пропущенного одной из функций обхода (next(), previous(), findNext(), findPrevious()).
После вызова next() или findNext(), key() эквивалентно peekPrevious().key(). После вызова previous() или findPrevious(), key() эквивалентно peekNext().key().
См. также value().
Item QMapIterator::next()
Возвращает следующий элемент и перемещает итератор на одну позицию вперед.
Вызовите key() на возвращаемом значении, чтобы получить ключ элемента, и value(), чтобы получить значение.
Вызов этой функции для итератора, расположенного в конце контейнера, приводит к неопределенным результатам.
См. также hasNext(), peekNext(), и previous().
Item QMapIterator::peekNext() const
Возвращает следующий элемент, не перемещая итератор.
Вызовите key() на возвращаемом значении, чтобы получить ключ элемента, и value(), чтобы получить значение.
Вызов этой функции для итератора, расположенного в конце контейнера, приводит к неопределенным результатам.
См. также hasNext(), next(), и peekPrevious().
Item QMapIterator::peekPrevious() const
Возвращает предыдущий элемент, не перемещая итератор.
Вызовите key() на возвращаемом значении, чтобы получить ключ элемента, и value(), чтобы получить значение.
Вызов этой функции для итератора, расположенного в начале контейнера, приводит к неопределенным результатам.
См. также hasPrevious(), previous(), и peekNext().
Item QMapIterator::previous()
Возвращает предыдущий элемент и перемещает итератор назад на одну позицию.
Вызовите key() на возвращаемом значении, чтобы получить ключ элемента, и value(), чтобы получить значение.
Вызов этой функции для итератора, расположенного в начале контейнера, приводит к неопределенным результатам.
См. также hasPrevious(), peekPrevious(), и next().
void QMapIterator::toBack()
Перемещает итератор в конец контейнера (после последнего элемента).
См. также toFront() и previous().
void QMapIterator::toFront()
Перемещает итератор в начало контейнера (перед первым элементом).
const T &QMapIterator::value() const
Возвращает значение последнего элемента, который был пропущен с помощью одной из функций обхода (next(), previous(), findNext(), findPrevious()).
После вызова next() или findNext(), value() эквивалентно peekPrevious().value(). После вызова previous() или findPrevious(), value() эквивалентно peekNext().value().
См. также key().
QMapIterator &QMapIterator::operator=(const QMap<Key, T> &map)
Настраивает итератор для работы с map. Итератор устанавливается в начало карты (перед первым элементом).
См. также toFront() и toBack().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qmapiterator.html