QT的迭代器有兩種類型:STL形式和JAVA形式。
QT的STL形式的迭代器,和STL的迭代器用法類似,而JAVA形式的迭代器,則提供了一套迭代器類,用於QT容器的迭代。
這其中,就有QT的迭代器類QMapIterator。
QMapIterator的公共函數如下:
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中,每次迭代器並不指向元素,而是指向兩個元素之間。
QMapIterator的樣例如下所示:
QMap<int, QWidget *> map;
...
QMapIterator<int, QWidget *> i(map);
while (i.hasNext()) {
i.next();
qDebug() << i.key() << ": " << i.value();
}
注意的是:必須先調用next()方法,才能指向下一個下一個值,這和我們理解的語法有區別。