语法
C++ 98中如果要遍历一个数组,可以按照以下的方式:
void Testfor()
{
int array[] = { 1,2,3,4,5 };
for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i)
{
array[i] *= 2;
}
for (int* p = array; p < array + sizeof(array) / sizeof(array[0]); ++p)
{
cout << *p << endl;
}
}
C++ 11使用范围for:
void Testfor2()
{
int array[] = { 1,2,3,4,5 };
for (auto& e : array)
{
e *= 2;
}
for (auto e : array)
{
cout << e << endl;
}
}
使用条件
- for 循环迭代的范围必须是确定的
对于数组而言,就是数组中第一个元素和最后一个元素的范围;
对于类而言,应该提供begin和end的方法,begin和end就是for循环迭代的范围。
在数组传参时,数组会降维成指针。此时不能使用范围for
- 迭代的对象要实现++和==的操作。