这篇文章主要讲解了“c++基于范围的for循环怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++基于范围的for循环怎么使用”吧!1、概念// 普通的for循环for(表
这篇文章主要讲解了“c++基于范围的for循环怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++基于范围的for循环怎么使用”吧!
// 普通的for循环for(表达式 1; 表达式 2; 表达式 3){ // 循环体}// 基于范围的for循环for (declaration : expression){ // 循环体}
它的工作流程是:
执行表达式 1
如果表达式 2 为 true,则执行循环体,否则跳出循环
执行表达式3,会到第二步,重复执行。
这种方式需要给出容器的两端,即开头和结尾。
它的工作流程:
将 expression 中的元素拷贝到 declaration
重复执行
这种方式不需要给出容器的两端,循环会自动以容器为范围展开,并且循环中也屏蔽掉了迭代器的遍历细节,直接抽取容器中的元素进行运算。
expression 可以是容器、数组、表达式、初始化列表等
例子:
vector<int> 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;
基于范围的 for 循环书写更为简单
上述例子中,基于范围的for循环的容器 arr 只访问了一次,即 :
后边的表达式只执行一次;而普通for循环每次都要比较迭代器是否到了容器的边界
// 只是将容器中的元素拷贝到 val,修改val不会影响容器中的值for (auto val : arr)cout << val << endl;
// 使用引用,修改val会影响容器中的值,即可以直接修改容器的值,且避免了拷贝的开销for (auto& val : arr)cout << val << endl;
// 使用const 修饰引用,使得只能只读,不能修改容器的数据for (const auto& val : arr)cout << val << endl;
遍历关联容器(set、map、multiset、multimap)时,即使使用引用,也不能修改容器中的值。对于关联容器来说,内部元素都是只读的,这是由容器的特性决定的,因此在 for 循环中 auto & 会被视为 const auto &
// 使用const 修饰引用,使得只能只读,不能修改容器的数据set<int> st{ 1,2,3,4,5,6 };for (auto &val : st) cout << val ++ << endl;// 不能修改常量
感谢各位的阅读,以上就是“C++基于范围的for循环怎么使用”的内容了,经过本文的学习后,相信大家对C++基于范围的for循环怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!
--结束END--
本文标题: C++基于范围的for循环怎么使用
本文链接: https://www.lsjlt.com/news/327285.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0