QMapIterator 类

算是自己用一些类时的记录吧,拿出来分享一下,也有对QT手册某些内容的翻译以及一些自己的理解。之前学习一个新类等的用法,没有做过详细的记录,全屏脑子和例子,一旦多了总有记不住的时候,倒不如边学边编辑记录了。第一篇博文,肯定写的不会很好哦。

QMapIterator 类 


QMapIterator 类 为 QMap 类  以及  QMultiMap类  提供Java风格的常亮迭代器。

QMap既有java风格迭代器又有STL风格迭代器。java风格比STL风格的迭代器更高级也更容易使用;另一方面,java风格迭代器效率略低。

QMapIterator<Key, T> 允许你对 QMap 或者  QMultiMap进行迭代。(所谓了迭代,说白了就是对一个 QMap类的容器进行一定顺序的遍历,可以看到里面的每一个内容(内容可以是QMap类的首地址等))。

如果希望在迭代时修改该映射内容,请使用QMutableMapIterator

QMapIterator构造函数用QMap 作为参数。在构造之后,迭代器定位在映射的最开始(在第一个项目之前)。下面是迭代器如何顺序遍历所有元素的:

QMap<int, QWidget *> map;
...
QMapIterator<int, QWidget *> i(map);
while (i.hasNext()) {
    i.next();
    qDebug() << i.key() << ": " << i.value();
}

next() 返回映射中下一个项目 并且向前推进一步迭代器。 key() and 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 and QMap::const_iterator


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值