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

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();
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值