千家信息网

C++基于范围的for循环怎么使用

发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇文章主要讲解了"C++基于范围的for循环怎么使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++基于范围的for循环怎么使用"吧!1、概念/
千家信息网最后更新 2025年01月22日C++基于范围的for循环怎么使用

这篇文章主要讲解了"C++基于范围的for循环怎么使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++基于范围的for循环怎么使用"吧!

1、概念

// 普通的for循环for(表达式 1; 表达式 2; 表达式 3){    // 循环体}// 基于范围的for循环for (declaration : expression){    // 循环体}

1.1、普通的for循环

它的工作流程是:

1、执行表达式 1

2、如果表达式 2 为 true,则执行循环体,否则跳出循环

3、执行表达式3,会到第二步,重复执行。

这种方式需要给出容器的两端,即开头和结尾。

1.2、基于范围的for循环

它的工作流程:

1、将 expression 中的元素拷贝到 declaration

2、重复执行

这种方式不需要给出容器的两端,循环会自动以容器为范围展开,并且循环中也屏蔽掉了迭代器的遍历细节,直接抽取容器中的元素进行运算。

expression 可以是容器、数组、表达式、初始化列表等

1.3、两者的区别

例子:

vector arr{ 1,2,3,4,5,6 };// 普通的 for 循环for (auto it = arr.begin(); it != arr.end(); ++it)        cout << *it << endl;// 基于范围的 for 循环for (auto val : arr)        cout << val << endl;

1、基于范围的 for 循环书写更为简单

2、上述例子中,基于范围的for循环的容器 arr 只访问了一次,即 : 后边的表达式只执行一次;而普通for循环每次都要比较迭代器是否到了容器的边界

2、基于范围的for循环使用

2.1、值拷贝

// 只是将容器中的元素拷贝到 val,修改val不会影响容器中的值for (auto val : arr)        cout << val << endl;

2.2、引用

// 使用引用,修改val会影响容器中的值,即可以直接修改容器的值,且避免了拷贝的开销for (auto& val : arr)        cout << val << endl;

2.3、只读引用

// 使用const 修饰引用,使得只能只读,不能修改容器的数据for (const auto& val : arr)        cout << val << endl;

2.4、关联容器

遍历关联容器(set、map、multiset、multimap)时,即使使用引用,也不能修改容器中的值。对于关联容器来说,内部元素都是只读的,这是由容器的特性决定的,因此在 for 循环中 auto & 会被视为 const auto &

// 使用const 修饰引用,使得只能只读,不能修改容器的数据set st{ 1,2,3,4,5,6 };for (auto &val : st)     cout << val ++ << endl;            // 不能修改常量

感谢各位的阅读,以上就是"C++基于范围的for循环怎么使用"的内容了,经过本文的学习后,相信大家对C++基于范围的for循环怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

循环 容器 范围 表达式 C++ 普通 元素 拷贝 循环体 关联 学习 两端 例子 内容 工作流程 数据 方式 流程 工作 影响 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 应用系统搭载服务器 备份服务器配置rsync文件 vs 安卓平板软件开发 开我的世界服务器需要注意什么 高通量测序原始数据的数据库 全军出击服务器连接网络错误 我的世界电信服务器哪个好 网络安全的绘画作品图片 计算机三级网络技术电子课本 服务器 web 签章 网络安全我国建设 灌云无忧网络技术排名靠前 桌面录屏软件开发 英雄联盟服务器显示不是中文 广州荔支网络技术有限公司上市 北京正规软件开发品质保障 jsp根据数据库的表来创表 泰豪科技能源互联网 网络安全个人隐私保护技术 网络安全文章素材 学计算机网络技术基础好吗 衢州服务器在哪个位置 东风雷诺软件开发公司 计算机网络技术与因特网 灌云无忧网络技术排名靠前 数据库技术应用相关的文献 计算机网络技术第一二章练习 华为app服务器版本失败 项目网络安全管理 互联网科技类基金
0