當我做這樣的事情: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