【发布时间】:2014-10-03 15:23:46
【问题描述】:
我正在查看来自http://www.cplusplus.com/doc/tutorial/arrays/ 的以下示例,但我无法弄清楚第二个 for 循环是如何工作的。 for 循环如何知道数组何时结束。如果它可以弄清楚为什么第一个循环不使用类似的方法?我的印象是无法确定数组的长度。我不确定如何调和这些概念。谢谢!
编辑:感谢所有出色的答案!
#include <iostream>
using namespace std;
int main()
{
int myarray[3] = {10,20,30};
for (int i=0; i<3; ++i)
++myarray[i];
for (int elem : myarray)
cout << elem << '\n';
}
【问题讨论】:
-
它使用
std::end,它接受数组并且可以使用大小,因为大小是类型的一部分。 -
编译器知道数组的长度。
-
数组在其类型中有大小信息。这用于基于范围的循环。参见例如如何在
std::end中获得长度。 -
请注意,在这方面,正确的数组(对于某些
T和N键入T[N])和指针(经常与指针混淆,并被认为是与“数组”相同)。 -
它是语法糖,它实际上使用
std::begin()和std::end()。
标签: c++ arrays for-loop foreach