当我做这样的事情:C++ 11基于范围的for循环如何知道数组大小?
int my_array[5] = {1, 2, 3, 4, 5};
for (int &x : my_array) {
x *= 2;
}
C++ 11显然知道,我的数组只有5个元素。这些信息是否存储在my_array对象的某个地方?
如果是这样,是否有充分的理由说明为什么它不能作为开发人员使用(或者它是?!?!?)?看来,如果C++开发人员总是知道他们正在处理的数组的范围,那么世界上的许多问题都将得到解决。
确定。那么为什么my_array.size不存在有什么特别的原因? – MrFox
@suslik:当然,因为数组不是类的类型,因此不能有成员函数。但是你可以简单地编写一个产生所需值的'array_size'自由函数模板,或者使用容易制作的['std :: extent'](http://en.cppreference.com/w/cpp/types/extent )。 –
我是如何过这么久才知道这么久的......我怪std :: vector :)。 – MrFox