C++ 中不同类型的基于范围的 for 循环迭代器
基于范围的“for”循环自 C++11 开始就被包含在语言中。它自动迭代(循环)迭代器(容器)。当与标准库容器一起使用时,这非常高效(正如本文所使用的那样),因为不会访问超出迭代器范围的内存。循环将自动从正确的位置开始并结束。
语法 :
这里有三种不同类型的基于范围的“for”循环迭代器,它们是:
1. 普通迭代器:
在普通迭代器中,声明一个普通临时变量作为迭代器,并且迭代器通过值 按值传递 获取当前循环项的副本。对临时副本进行的任何更改都不会反映在原始可迭代对象中。
语法 :
- 使用的 迭代器 是一个普通的任何数据类型的迭代器,如 int、float、double 等,它用于迭代任何类型的容器。
- list 可以是任何类型的容器。
这是普通的基于范围的迭代器实现:
输出:
2. 引用迭代器:
引用迭代器被声明为引用变量,并且迭代器按引用获取当前项的值。因此,在循环内进行的更改肯定会影响原始容器本身。
语法 :
- 使用的 迭代器 是一个普通的任何数据类型的迭代器,如 int、float、double 等,它用于迭代任何类型的容器。
- list 可以是任何类型的容器。
这是引用基本范围的迭代器实现:
输出:
3. 常量迭代器 :
常量迭代器声明为 对常量的引用 ,在这种情况下,不会复制当前循环项,使执行速度比上面两种情况更快。这在我们不希望迭代器值发生任何意外更改或者如果正在遍历容器中的大型项目时非常有用。如果我们尝试修改现有值,则编译器将显示错误。
语法 :
- 使用的 迭代器 是任何数据类型的普通迭代器,如int,float,double等,用于在任何类型的容器上进行迭代。
- list 可以是任何类型的容器。
下面是正常的基于范围的迭代器的实现:
输出: