C++ 如何计算二维数组的项目数?

C++ 如何计算二维数组的项目数?,c++,multidimensional-array,C++,Multidimensional Array,我想计算2D数组中的项目数 比如说 前面的数组有3行Hello,I'm,Jack和10列,比如Hello是10的5 每个人都知道,当我们想要获得单个维度的数组计数时,我们会执行以下操作 int size = (sizeof(arr) / sizeof(char)); 但是现在我们需要一种方法来知道数组中单独有多少行? 另一种方法是知道数组中单独有多少列?更一般的形式是 int n_rows = sizeof(arr)/sizeof(arr[0]); int n_cols = sizeof(ar

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

比如说

前面的数组有3行Hello,I'm,Jack和10列,比如Hello是10的5

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

int size = (sizeof(arr) / sizeof(char));
但是现在我们需要一种方法来知道数组中单独有多少行?
另一种方法是知道数组中单独有多少列?

更一般的形式是

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

你可以这样做

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++支持另一种获取大小的方法,称为

,以前的数组有3行10列-不,我不知道从哪里获取10,但这是错误的。
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;
}