计算常量2D c阵列中的行数

Val*_*itz 4 c c++

计算数组中元素的数量很容易:

int myarr[] ={1,2,3};
int myarrsize = sizeof(myarr)/sizeof(myarr[0]);
Run Code Online (Sandbox Code Playgroud)

但是,如何计算2D数组中的行数?

int my2Darr[][3]={{1,2,3},{4,5,6}};
int my3DarrRows = ???
Run Code Online (Sandbox Code Playgroud)

可能吗?

Oli*_*rth 13

一样的方法.所以要么:

sizeof(my2Darr)/sizeof(my2Darr[0])
Run Code Online (Sandbox Code Playgroud)

要么:

sizeof(my2Darr[0])/sizeof(my2Darr[0][0])
Run Code Online (Sandbox Code Playgroud)

取决于你的"行"的意思.


bil*_*llz 5

除非您指定您已经知道其大小的第二个数组大小,否则您的代码将不会编译:

int my2Darr[][3]={{1,2,3},{4,5,6}};
             ^^^
Run Code Online (Sandbox Code Playgroud)

那么问题来了, 如何计算二维数组的行数呢?

template <class T, unsigned N, unsigned N1>
int length(T (&)[N][N1])
{
    return N;
}
Run Code Online (Sandbox Code Playgroud)

如果您想要列大小,请N1返回