QMapIterator Class

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的最开始部分(在第一个项之前)。

QMapmap;
...
QMapIterator 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 Class_第1张图片


如何按照相反的顺序迭代元素:

QMapIterator 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();
  }

你可能感兴趣的:(Qt)