Qt 提供一个关键字 foreach (实际是 <QtGlobal> 里定义的一个宏)用于方便地访问容器里所有数据项。



foreach 关键字用于遍历容路中所有的项,使用 foreach 的句法是:

foreach (variable, container)

使用 foreach 的代码比使用迭代器更简洁。例如,使用 foreach 遍历一个 QLinkedList<QString> 的示例代码如下:

  1. QLinkedList<QString> list;
  2. ...
  3. QString str;
  4. foreach (str, list)
  5. qDebug() << str;

用于迭代的变量也可以在 foreach 语句里定义,foreach 语句也可以使用花括号,可以使用 break 退出迭代,示例代码如下:

  1. QLinkedList<QString> list;
  2. ...
  3. foreach (const QString &str, list) {
  4. if (str.isEmpty())
  5. break;
  6. qDebug() << str;
  7. }

对于 QMap 和 QHash,foreach 会自动访问“键-值”对里的值,所以无需调用 values()。如果需要访问键则可以调用 keys(),示例代码如下:

  1. QMap<QString, int> map;
  2. ...
  3. foreach (const QString &str, map.keys())
  4. qDebug() << str << ':' << map.value(str);

对于多值映射,可以使用两重 foreach 语句,示例代码如下:

  1. QMultiMap<QString, int> map;
  2. ...
  3. foreach (const QString &str, map.uniqueKeys()) {
  4. foreach (int i, map.values(str))
  5. qDebug() << str << ':' << i;
  6. }

注意,foreach 关徤字遍历一个容器变量是创建了容器的一个副本,所以不能修改原来容器变量的数据项。

最新文章

  1. kettle将Excel数据导入oracle
  2. 小游戏runpig总结
  3. Exception raised during rendering: java.lang.System.arraycopy([CI[CII)V
  4. BZOJ 1090: [SCOI2003]字符串折叠
  5. Crystal Report 遇到需要登录的问题
  6. Flink - metrics
  7. c# 关键字delegate、event(委托与事件)[MSDN原文摘录][2]
  8. erlang远程加载模块须知
  9. web.xml整合s2sh内容
  10. 删除或清空具有外键约束的表数据报-ERROR 1701 (42000)
  11. NSMutableString
  12. ios--uitextfield动态限制输入的字数(解决方式)
  13. 动态规划之一ones
  14. Hibernate介绍和入门案例
  15. Android-第一天
  16. 虚拟机搭建CentOS主机win10通过xshell连接
  17. bs4抓取糗事百科
  18. jQuery滑动
  19. 常见 HTTP/FTP/WebSocket 错误代码大全 - 转
  20. php in_array 的一个坑

热门文章

  1. UI自动化测试框架Gauge 碰到无法识别Undefined Steps 红色波纹标记
  2. Kubernetes部署-二进制方式
  3. webpack 命令行报错“webpack” 不是内部或外部命令的解决方法
  4. IntelliJ IDEA2021.2 常用快捷键汇总总结
  5. SetupDi系列函数
  6. LUSE: 无监督数据预训练短文本编码模型
  7. Linux下获取当前程序的绝对路径
  8. Axure RP 9 Enterprise/Pro/Team for Mac/Windows安装破解版激活教程
  9. nacos Failed to obtain JDBC Connection 连接异常
  10. 关于document.write()方法重绘页面问题