You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C++11基于范围的for循环处理QJsonArray

用C++11基于范围的for循环处理QJsonArray的实现方法

没问题,我来帮你把这段旧风格的索引循环改成C++11的基于范围的for循环,写法会更简洁直观,逻辑和你原来的完全一致:

先回顾下你的需求:遍历存有带bar字段对象的QJsonArray,给每个对象新增foo字段(值和bar字段内容相同),最后把处理后的对象存入新数组。

用C++11范围for循环的实现代码如下:

// QJsonArray oldArray包含带有"bar"元素的对象数组
QJsonArray newArray;
for (const QJsonValue& value : oldArray) {
    QJsonObject element = value.toObject();
    element["foo"] = element["bar"];
    newArray.append(element);
}

这里有几个关键点可以说明下:

  • 范围for循环会自动遍历oldArray中的每一个QJsonValue元素,不需要手动维护索引和计数,代码更简洁不易出错
  • 使用const QJsonValue&是为了避免对原数组元素的不必要拷贝,我们只是读取原元素,之后会复制出一个新的QJsonObject来修改
  • 后续的字段添加和数组追加逻辑和你原来的旧循环完全一致,保证功能不变

如果你追求更紧凑的写法,也可以把对象的创建和修改合并,但上面的写法已经足够清晰易读,是日常开发里的首选方式。

内容的提问来源于stack exchange,提问作者Paul Masri-Stone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:00:59