C++如何使用范围for循环_C++11 for-each语法的简洁之道

C++11引入范围for循环,简化容器遍历。语法为for (declaration : range),如遍历vector nums = {1,2,3,4,5}; for (int n : nums) cout

c++如何使用范围for循环_c++11 for-each语法的简洁之道

C++11引入了范围for循环(也称为基于范围的for循环或for-each循环),极大简化了对容器和数组的遍历操作。相比传统的for循环,它更简洁、安全,且不易出错。

基本语法

范围for循环的语法格式如下:

for (declaration : range) {    // 循环体}

declaration 是用于声明当前元素的变量,range 是要遍历的对象,如数组、vector、string等支持迭代的容器。

例如,遍历一个整型vector:

立即学习“C++免费学习笔记(深入)”;

std::vector nums = {1, 2, 3, 4, 5};for (int n : nums) {    std::cout << n << " ";}

输出结果为:1 2 3 4 5

使用引用避免拷贝

如果容器中元素是类对象或大型数据结构,直接值传递会触发拷贝,影响性能。此时应使用引用:

std::vector words = {"hello", "world"};for (const std::string& word : words) {    std::cout << word << " ";}

使用 const std::string& 可避免拷贝,同时防止意外修改原数据。若需要修改元素,则使用非const引用:

for (std::string& word : words) {    word += "!";  // 修改原容器中的元素}

支持的类型

范围for循环适用于所有提供 begin()end() 成员函数或可用ADL查找到对应自由函数的类型。常见包括:

数组(内置数组和std::array)标准容器:vector、list、set、map等字符串(std::string)初始化列表(initializer_list)

例如遍历C风格数组:

int arr[] = {10, 20, 30};for (int x : arr) {    std::cout << x << " ";}

注意事项

不能用于动态分配的指针数组(即通过new创建的数组),因为其不保留大小信息。以下代码是错误的:

int* ptr = new int[3]{1, 2, 3};// for (int x : ptr)  // 编译错误!ptr不是范围类型

应优先使用std::vector或std::array代替。

基本上就这些。掌握范围for循环后,你会发现遍历操作变得直观又高效。

以上就是C++如何使用范围for循环_C++11 for-each语法的简洁之道的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1486335.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 09:44:10
下一篇 2025年12月19日 09:44:18

相关推荐

发表回复

登录后才能评论
关注微信