QMapIterator Class

来源:互联网 发布:iphone4s有4g网络吗 编辑:程序博客网 时间:2024/06/05 00:51

QMapIterator类为QMapQMultiMap提供了一个java样式的const迭代器。
QMap有java风格的迭代器和STL样式的迭代器两种。与STL样式的迭代器相比,java风格的迭代器更高级,更容易使用;另一方面,他们的效率稍微低一些


QMapIterator< Key,t>迭代器允许你遍历QMap对象(或QMultiMap对象)。如果您想在迭代过程中修改对象,则使用QMutableMapIterator //The QMutableMapIterator class provides a Java-style non-const iterator for QMap and QMultiMap.。


QMapIterator构造函数采用QMap作为参数。在构建之后,迭代器位于map的最开始部分(在第一个项之前)。

QMap<int,QWidget*>map;...QMapIterator<int,QWidget*> i(map);while(i.hasNext()){    i.next();    qDebug() << i.key() << ":" << i.value();    }
Item QMapIterator::next()   //返回下一个项,将迭代器推进到下一个位置。bool QMapIterator::hasNext() const  //如果在迭代器后面至少存在一个项,则返回ture。否则返回false

与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();  }
原创粉丝点击