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、自定义结构体等大对象避免性能浪费。

相关推荐
艾莉丝努力练剑1 小时前
【AI大模型接入SDK】LLM会话管理模块设计
网络·c++·人工智能·学习·大模型
小此方1 小时前
「C++AI大模型接入SDK」(一) API接入与本地两种方式对比、API Key获取、API报文详解与简单API的构建
开发语言·c++·人工智能
wuyk5552 小时前
Python实战项目02:学生成绩管理系统(控制台|CSV导出|完整落地)
开发语言·python
浪子明X9 小时前
十六位账本怎样发现传输差错:Internet Checksum 生活类比
开发语言
GG-_-Bond10 小时前
9.1 kv存储resp协议模拟面试
c++
米糕闯编程10 小时前
鱼香ros2(五)用C++编写节点
c++·ros2·cmakelists·鱼香
xiangyun6112 小时前
【408数据结构 08】队列:循环队列判空判满,408年年考,一次讲清
c语言·开发语言·数据结构·c++·算法
xiangyun6112 小时前
【408数据结构 06】双链表、循环链表、静态链表
c语言·开发语言·数据结构·c++·算法
白远山13 小时前
家政服务家政社区派单实战:调度系统架构设计与实现指南
java·开发语言·小程序·架构·需求分析
fpcc14 小时前
计算机原理—构建过程中的分段分析
c++