2013-10-19 32 views
0

有人可以幫我找出爲什麼這不起作用。試圖讓一個array.length工作在for循環

int main() { 
int A[100]; 

    for(int i=0; i<A.length; i++) 
    { 

    } 

    return 0; 
} 

這裏是我的錯誤

[Error] request for member 'length' in 'A', which is of non-class type 'int [100]'

+3

'length'是一個Java事物 - 你想'sizeof' – sje397

+2

數組在C++中沒有成員。 – juanchopanza

+2

@ sje397'sizeof'不會給出數組中元素的個數。 – juanchopanza

回答

3

有沒有像length屬性對於C風格的數組沒有這樣的事情。考慮使用std::array和它的size()成員,或者sizeof(A)/sizeof(int),如果你堅持使用C風格的數組。

+0

轉讓的要求明確指出不使用矢量,所以我堅持這樣做。 –

+1

這是一個數組,而不是一個向量; ) – erenon

+0

我知道我只是說,因爲你說如果你堅持C風格的數組。這工作順道謝謝你。 –

2

平面陣列沒有任何成員。如果您需要了解它們的長度,你要麼必須跟蹤它,或者你可以寫一個簡單的函數模板來得到它:

template<class T, size_t N> 
constexpr size_t size(const T (&)[N]) { return N; } 

然後

int A[100]; 
.... 
for(int i=0; i < size(A); i++) { ... } 

這將是容易得多使用std::array<int, 100>。這有一個尺寸方法。