C++ 11 常用for循环

C++11 常用 for 循环

1. 范围 for 循环(range-based for)--- C++11 核心新特性

最常用,遍历容器元素最简洁:

cpp 复制代码
// 只读访问
QVector<int> values = {1, 2, 3, 4, 5};
for (int v : values) {
    qDebug() << v;
}

// 引用修改(推荐 auto &)
for (auto &v : values) {
    v *= 2;  // 修改原元素
}

// 只读引用,避免拷贝(适合大对象如 QString)
for (const auto &v : stringList) {
    qDebug() << v;
}

2. 传统 for 循环 + auto

cpp 复制代码
QList<QString> names = {"Alice", "Bob"};
for (auto i = 0; i < names.size(); ++i) {
    qDebug() << names.at(i);
}

3. 迭代器 for 循环

cpp 复制代码
// STL 迭代器风格
QMap<QString, int> scoreMap = {{"Alice", 90}, {"Bob", 85}};
for (auto it = scoreMap.begin(); it != scoreMap.end(); ++it) {
    qDebug() << it.key() << it.value();
}

// 只读迭代器
for (auto it = scoreMap.cbegin(); it != scoreMap.cend(); ++it) {
    qDebug() << it.key() << it.value();
}

4. 范围 for 遍历 QMap(C++17 结构化绑定更佳,C++11 用 auto)

cpp 复制代码
// C++11 中 QMap 不能直接 range-for 取键值对
for (const QString &key : scoreMap.keys()) {
    qDebug() << key << scoreMap.value(key);
}

选择建议

场景 推荐写法
遍历读元素 for (const auto &e : container)
遍历改元素 for (auto &e : container)
需要索引 传统 for + auto i
需要键值对 迭代器 for (auto it = ...)

关键原则 :能用 const auto & 就别用值拷贝 auto,对 QString、自定义结构体等大对象避免性能浪费。

相关推荐
“AI国潮设计-小江”12 小时前
《Python+SDXL实战:用ControlNet精准控制“英歌舞翻糖吐司”构图,附批量生成脚本》
开发语言·人工智能·python·prompt·aigc
程序喵大人12 小时前
【C++入门】编译链接模型 - 01 一个 C++ 程序是怎样变成可执行文件的
开发语言·c++·编译链接模型
by2099913 小时前
vector 的模拟实现:扩容与边界的详细阐述(下)
c++·经验分享·vector·动态数组
sunshine22 girl13 小时前
Java学习七 Java 项目实战1-项目创建和主页面搭建
java·开发语言·学习
菜鸟~noob23314 小时前
【电子战】第三季预告—波武器与电子系统强力毁伤
开发语言·数据库·matlab·电子战
惊讶的猫15 小时前
工具选对之后还不够:商城 Agent 的参数与权限治理
开发语言·python
cmpxr_15 小时前
【MicroPython】如何刷新ESP8266的固件
开发语言·micropython
搭贝15 小时前
上厕所的时间搭好一套系统:AI自动生成实测
开发语言·人工智能·低代码·ai·php·搭贝
智感子16 小时前
智能称重·数据上云:从仪表读数到可追溯的计量凭证
开发语言·php
\光辉岁月/16 小时前
7.javase-面向对象
java·开发语言