当前位置: 首页 > news >正文

免费试用平台网站源码/百度关键词刷搜索量

免费试用平台网站源码,百度关键词刷搜索量,软件推广兼职可以做吗,做程序教程网站赚钱吗📘 C 范围 for 循环详解(Range-based for loop) 一、什么是范围 for 循环? 范围 for 循环(Range-based for loop) 是 C11 引入的一种简化容器/数组遍历的方式。它通过自动调用容器的 begin() 和 end() 方法…

📘 C++ 范围 for 循环详解(Range-based for loop)


一、什么是范围 for 循环?

范围 for 循环(Range-based for loop) 是 C++11 引入的一种简化容器/数组遍历的方式。它通过自动调用容器的 begin()end() 方法,实现对每个元素的遍历,无需手动管理索引或迭代器


二、语法格式

for (declaration : expression) {// 循环体
}
  • declaration:用于声明当前遍历的元素(可使用 auto 自动推导类型)
  • expression:表示要遍历的容器或数组

三、基本原理

✅ 自动调用 begin()end()

范围 for 循环会自动调用容器的 begin()end() 方法,获取起始和结束迭代器,然后依次遍历每个元素。

示例说明:
std::vector<int> numbers = {1, 2, 3, 4, 5};for (int num : numbers) {std::cout << num << " ";
}
✅ 等价于传统写法:
std::vector<int> numbers = {1, 2, 3, 4, 5};for (auto it = numbers.begin(); it != numbers.end(); ++it) {int num = *it;std::cout << num << " ";
}

四、适用对象

范围 for 循环适用于以下对象:

类型是否支持示例
数组✅ 支持int arr[] = {1, 2, 3};
标准库容器✅ 支持std::vector, std::list, std::map
自定义容器类✅ 支持需要实现 begin()end() 方法
字符串(std::string✅ 支持逐字符遍历
原始指针容器❌ 不支持没有 begin()/end() 方法

五、优点

优点说明
代码简洁避免手动写 begin()/end()
安全性高不易越界,适合只读遍历
可读性强更贴近自然语言,易于理解
自动类型推导可使用 auto 自动识别元素类型

六、局限性

局限说明
不能直接访问索引无法通过循环变量获取当前索引
不能反向遍历只能从前往后遍历
不能跳过元素无法控制步长(如 i += 2
不能修改容器结构不能在循环中添加/删除元素

七、代码示例

1. 遍历数组

int arr[] = {1, 2, 3, 4, 5};for (int num : arr) {std::cout << num << " ";
}
// 输出: 1 2 3 4 5

2. 遍历 std::vector

#include <iostream>
#include <vector>int main() {std::vector<int> nums = {10, 20, 30, 40, 50};for (auto num : nums) {std::cout << num << " ";}// 输出: 10 20 30 40 50return 0;
}

3. 遍历 std::map

#include <iostream>
#include <map>int main() {std::map<std::string, int> scores = {{"Alice", 95},{"Bob", 80},{"Charlie", 88}};for (const auto &pair : scores) {std::cout << pair.first << ": " << pair.second << std::endl;}return 0;
}

输出:

Alice: 95
Bob: 80
Charlie: 88

4. 遍历 std::string

#include <iostream>
#include <string>int main() {std::string str = "Hello";for (char c : str) {std::cout << c << " ";}// 输出: H e l l oreturn 0;
}

5. 使用引用修改元素

#include <iostream>
#include <vector>int main() {std::vector<int> nums = {1, 2, 3, 4, 5};for (auto &num : nums) {num *= 2;  // 修改原容器中的值}for (auto num : nums) {std::cout << num << " ";}// 输出: 2 4 6 8 10return 0;
}

6. 使用 auto 自动推导类型

#include <iostream>
#include <vector>int main() {std::vector<std::string> names = {"Tom", "Jerry", "Spike"};for (const auto &name : names) {std::cout << name << std::endl;}return 0;
}

八、常见错误与修正

错误写法正确写法说明
for (int x : 10)for (int x : vector)范围 for 必须作用于容器
for (int x : {});std::vector<int> v = {1, 2}; for (int x : v)空列表不能单独使用
for (int &x : const std::vector<int> v)for (int x : v)不能通过引用修改常量容器
for (int x : arr, arr + 5)for (int x : arr)不需要手动指定范围,自动识别容器边界

九、性能与安全建议

建议说明
使用 const auto & 遍历只读容器避免拷贝,提高性能
使用 auto & 修改容器元素通过引用直接操作原数据
避免在循环中修改容器结构push_back()erase(),可能导致迭代器失效
优先使用 const如果不打算修改元素,使用 const auto & 提高代码清晰度

十、通俗类比

你可以把范围 for 循环理解为:

for (auto &item : shopping_list) {std::cout << "Buy: " << item << std::endl;
}
  • shopping_list 是你要遍历的容器
  • item 是当前遍历到的元素
  • 循环自动帮你“取出”每一个物品,不需要你手动操作索引或指针

十一、术语对照表

英文术语中文解释
Range-based for loop范围 for 循环
Container容器(如 vector, map
Iterator迭代器(传统 for 循环中使用)
Reference引用(& 表示)
auto自动类型推导
const auto &常量引用,防止拷贝和修改原始数据

十二、设计建议

场景推荐写法
只读遍历容器for (const auto &item : container)
修改容器元素for (auto &item : container)
遍历字符串for (char c : str)
遍历 map 的键值对for (const auto &pair : my_map)
避免拷贝使用引用 &
避免修改容器结构不在循环中调用 push_back()erase() 等方法

十三、总结

特性说明
语法简洁for (auto &item : container)
自动调用 begin() / end()无需手动写迭代器
适用于容器和数组vector, map, array, string
不能控制索引无法获取当前索引值
不适合动态修改容器如增删元素会导致迭代器失效

http://www.whsansanxincailiao.cn/news/30283266.html

相关文章:

  • 株洲第三方网站建设哪家好/google seo
  • 奶茶店加盟网站建设/惠州seo排名外包
  • wordpress好友添加/抖音seo公司
  • 外贸建网站哪家好/seo是什么意思为什么要做seo
  • 贵州省建设厅的网站/网络营销的概念及特征
  • 浙江省住房和城乡建设厅网官方网站/长尾关键词挖掘爱站网
  • 做生物学的网站/谷歌浏览器下载电脑版
  • 如何网上做个人广告/搜索引擎优化seo是什么
  • 做自媒体可利用的国外网站/上海最近三天的新闻
  • 深圳市深圳市住房和建设局网站首页/友情链接seo
  • 建筑工程素材资源网站/站内优化包括哪些
  • 手机网站按那个尺寸做/网络营销手段有哪四种
  • 淘宝客网站做seo有用吗/重庆网络推广专员
  • 品牌网站建设哪里有/广州各区风险区域最新动态
  • 专业找工作网站下载/百度平台商家
  • 服务器wordpress建站教程/网络平台运营是做什么的
  • 自己家的电脑做网站需要备案没/为什么sem的工资都不高
  • 成都专业的网站建站公司/百度信息流代运营
  • 建网站安全/自动秒收录网
  • 有哪些做伦敦金的网站/seo顾问多少钱
  • 园林公司网站建设费用/百度站长工具平台
  • 网站导航栏怎么设置/优化网站找哪家
  • 网站里自己怎么做推广/离我最近的电脑培训中心
  • 尖草坪网站建设/搜索关键词排名推广
  • 东莞站福公司工资/模板免费网站建设
  • 做网站的流程是什么/seo推广软件代理
  • 宁波seo网络推广定制多少钱/seo外链优化培训
  • wordpress阿里云全站加速/一个完整的策划案范文
  • 做网站用别人的源码可以吗/seo教程 seo之家
  • 毕节市网站建设/杭州网站