如何计算2D数组的项目?

时间:2013-07-29 03:46:16

标签: c++ multidimensional-array

我想计算2D数组中的项目数。

例如

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

前一个数组有3行(HelloI'mJack)和10列(Hello从10长度开始为5)。

每个人都知道,当我们想要获得具有单个维度的数组时,我们会执行以下操作。

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

但现在我们需要一种方法来了解阵列中有多少行? 另一种方法是知道,阵列中还有多少列,单独使用?

2 个答案:

答案 0 :(得分:8)

你可以这样做。

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 :(得分:5)

更通用的形式是

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