0

二次元配列の項目数を数えたい。

例えば

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

前の配列には 3 行 ( HelloI'mJack) と 10 列 (Hello長さ 10 から 5 です) があります。

単一次元の配列のカウントを取得したい場合は、次のようにすることは誰もが知っています。

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

しかし今、配列内の行数を単独で知る方法が必要です。
また、配列内の列数を単独で知る別の方法は?

4

2 に答える 2

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

于 2013-07-29T03:52:10.870 に答える
5

より一般的な形式は

int n_rows = sizeof(arr)/sizeof(arr[0]);
int n_cols = sizeof(arr[0])/sizeof(arr[0][0]);
于 2013-07-29T03:48:45.223 に答える