C++11基于范围的for循环代码示例
作者:大柏怎么被偷了
范围for的引入
int main(void) { int arr[] = { 1,2,3,4,5,6,7,8,9 }; int sz = sizeof(arr) / sizeof(arr[0]); for (int i = 0; i < sz; i++) { cout << arr[i] << " "; } return 0; }
在C++98里面遍历一个数组,或者说是一个有范围的集合而言,对应程序员来说明循环的范围是多余的。
因此C++11中引入了基于范围的for循环,for循环后面的括号由冒号“:”分为俩部分:第一部分是范围内用于迭代的变量,第二部分则表示被迭代的范围。
for(declaration : range) {}
declaration是变量声明,用于存储每次迭代中的元素值,可以是自定义的变量名,也可以是已有的变量名。
range是要遍历的容器或者迭代的对象。
【注意】与普通循环类似,可以用continue来结束本次循环,也可以用break来跳出整个循环。
int main(void) { int arr[] = { 1,2,3,4,5,6,7,8,9 }; int sz = sizeof(arr) / sizeof(arr[0]); for (auto a : arr) { cout << a << " "; } return 0; }
范围for的使用条件
1.for循环迭代的范围必须是确定的。
(1)对于数组而言,就是数组中第一个元素和最后一个元素的范围
(2)对于类而言,应该提供begin和end的方法,begin和end就是for循环迭代的范围
2.迭代的对象要实现++和==的操作。
对于数组而言,就是数组中第一个元素和最后一个元素的范围;对于类而言,应该提供begin
和end
的方法,begin
和end
就是for
循环迭代的范围。
注意:以下代码就有问题,因为for
的范围不确定
void TestFor(int array[]) { for(auto& e : array) cout<< e <<endl; }
迭代的对象要实现++和==的操作
关于这个问题,我将在后续文章进行讲解,敬请期待,现在先了解一下基础概念
迭代器
迭代器(Iterator)是一种对象,用于遍历容器中的元素。它提供了一种统一的访问容器元素的方式,使得用户可以通过相同的方式访问不同类型的容器。
迭代器一般具有以下操作:
- 通过
*
运算符获取当前迭代器指向的元素 - 通过
++
运算符将迭代器向后移动到下一个元素 - 通过
==
运算符判断两个迭代器是否相等 - 通过
!=
运算符判断两个迭代器是否不相等
使用范围for
循环时,可以使用迭代器来表示集合的起始位置和结束位置,范围for
循环会自动遍历整个集合中的元素,不需要手动控制迭代器的移动和判断。这样就避免了使用传统的for
循环需要手动管理迭代器的复杂性。
总结
到此这篇关于C++11基于范围的for循环的文章就介绍到这了,更多相关C++基于范围的for循环内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!