C++新特性详细分析基于范围的for循环

C++新特性详细分析基于范围的for循环

目录

1、概念

1.1、普通的for循环

1.2、基于范围的for循环

1.3、两者的区别

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

2.1、值拷贝

2.2、引用

2.3、只读引用

2.4、关联容器

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<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;

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<int> st{ 1,2,3,4,5,6 }; for (auto &val : st) cout << val ++ << endl;// 不能修改常量

到此这篇关于C++新特性详细分析基于范围的for循环的文章就介绍到这了,更多相关C++ for循环内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!

推荐阅读

    16天的最新的内存引用:4gb上涨10元

    16天的最新的内存引用:4gb上涨10元,,内存价格上涨到4GB 10元 在今天中关村的现货市场,内存价格总体呈发展趋势,但它是小的。内存市场昨日下

    wps如何生成引用

    wps如何生成引用,WPS教程,1.wps怎么添加引用文献wps添加引用文献:1、打开文档,点击WPS文字右侧下拉菜单。2、打开插入>引用>脚注与尾注3、选

    雷蛇设置宏|雷蛇设置宏循环

    雷蛇设置宏|雷蛇设置宏循环,,雷蛇设置宏循环使用雷蛇软件设置宏驱动的方法如下:1、今天小编就以雷蛇鼠标为例,介绍宏定义的使用。当刚买的鼠

    如何将只读文件从CD-ROM复制到计算机

    如何将只读文件从CD-ROM复制到计算机,,我借了几张光盘,里面的东西很好。我想把CD中的只读文件复制到计算机上,但是计算机提示不能复制。把光

    potplayer设置|potplayer设置循环播放

    potplayer设置|potplayer设置循环播放,,potplayer设置循环播放戴尔电脑上面比较好用的软件有哪些?萊垍頭條敬业签是电脑/移动端/多端云同步

    苹果电脑u盘只读|苹果电脑u盘只能读

    苹果电脑u盘只读|苹果电脑u盘只能读,,苹果电脑u盘只能读 U盘不需要卸载就能够读出来的,因为我们U盘的话,他们基本上是一个移动文件的一个工

    wpsisppt设置只读|WPS设置只读文件

    wpsisppt设置只读|WPS设置只读文件,如何设置,wpsisppt,1.WPS怎样设置只读文件您好,很高兴为您解答!标题和内容不是一个问题?设置只读文件,在[W