【发布时间】:2015-11-29 23:18:09
【问题描述】:
在内部,数组除了包含的元素之外不保留任何数据(甚至不保留它的大小,它是模板参数,在编译时固定)。
我理解这意味着使用array 类似于在同一范围内使用int[] 和sizeof。但是这段代码是有效的还是依赖于未定义的行为?
class A {
array<int, 10> arr;
void setArr() {
for (int& i : arr)
i = 42;
}
void printArr() {
for (int i : arr)
cout << i << endl;
}
};
编译器如何知道何时停止 foreach 而不将数组大小存储在堆或堆栈上?我运行它,代码有效。
【问题讨论】:
-
看到
,10>的东西了吗?编译器也能看到。 -
看看更好的参考,
std::array::size()。