2013-07-29 80 views
0

我想計算二維數組中的項目數。如何計算二維數組的項目?

例如

char arr[][10] = {"Hello", "I'm", "Jack"}; 

先前陣列具有3行(HelloI'mJack)和類似的10柱(Hello是5 10的長度)。

大家都知道,當我們想要得到單維數組的數量時,我們做了以下工作。

int size = (sizeof(arr)/sizeof(char)); 

但現在我們需要一種方法來知道,多少行數組中,一個人嗎?
另一種方式知道,陣列中還有多少列,單獨?

+1

*前一陣有3行10列* - 沒有它不,我不知道你在哪裏得到10從,但那是錯的。 –

回答

5

更一般的形式是

int n_rows = sizeof(arr)/sizeof(arr[0]); 
int n_cols = sizeof(arr[0])/sizeof(arr[0][0]); 
7

你可以不喜歡這樣。

template<typename T, size_t M, size_t N> 
size_t array_rows(const T (&arr)[M][N]) { 
    return M; 
} 

template<typename T, size_t M, size_t N> 
size_t array_columns(const T (&arr)[M][N]) { 
    return N; 
} 

C++支持的獲取調用大小的另一種方式std::extent

+1

對於std :: extent +1 –