概念:
对于以前要遍历一个数组,需要程序员自己书写数组的范围(sizeof)因此c++中引入范围for,避免因为范围书写错误而导致程序有意想不到的结果
用法:
for(变量:范围)用:号隔开,第一部分是范围内用于迭代的变量,第二部分则表示被迭代的范围。
int main()
{
int arr[] = { 1,2,3,4,5 };
for (auto a : arr)
{
a = a * 2;
cout << a << endl;
}
return 0;
}
与普通的for循环一样,可以用break和continue
使用条件:
1.for循环的范围必须是确定的,也就是相当于数组中的第一个元素和最后一个元素的范围
2.对于类而言,要提供begin和end的方法。
void test(int arr[])
{
for (auto a : arr)
{
cout << a << endl;
}
}
在 C++ 里,当数组作为函数参数传递时,它会退化为指向数组首元素的指针。
这样范围就不确定了。
所以在 void test(int arr[]) 中,arr 实际上是一个 int* 类型的指针,并非数组类型。
而基于范围的 for 循环(也就是 for (auto a : arr) 这种形式)要求其右侧的表达式必须是一个数组或者实现了 begin() 和 end() 成员函数(或者非成员 begin() 和 end() 函数)的容器类型。指针类型并不满足这个要求,因此不能直接在基于范围的 for 循环中使用。
2882

被折叠的 条评论
为什么被折叠?



