我有一个由多个子数组组成的多维数组。是否可以计算数组中子数组的数量?
答案 0 :(得分:3)
如果在堆栈上声明了数组,那么可以使用sizeof()
函数获取元素数量:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[3][4];
fprintf(stdout, "size of a in bytes: %zu\n", sizeof(a));
fprintf(stdout, "size of a[0][0] in bytes: %zu\n", sizeof(a[0][0]));
fprintf(stdout, "number of elements in a: %zu\n", sizeof(a)/sizeof(a[0][0]));
int b[3][4][5];
fprintf(stdout, "size of b in bytes: %zu\n", sizeof(b));
fprintf(stdout, "size of b[0][0][0] in bytes: %zu\n", sizeof(b[0][0][0]));
fprintf(stdout, "number of elements in b: %zu\n", sizeof(b)/sizeof(b[0][0][0]));
return EXIT_SUCCESS;
}
编译:
$ gcc -Wall stack_array_test.c -o stack_array_test
结果:
$ ./stack_array_test
size of a in bytes: 48
size of a[0][0] in bytes: 4
number of elements in a: 12
size of b in bytes: 240
size of b[0][0][0] in bytes: 4
number of elements in b: 60
了解这一点,您可以修改分母以获得不同维度索引的元素大小。我将此作为练习。
现在,如果您的数组是动态声明的 - 在堆上 - 那么您就无法使用此技术。
您可以创建一个struct
来模仿存储指针的vector,以及表示元素数量的size_t
。您可以扩展这个想法以保持向量的向量,或向量的向量的向量,等等。获得&#34;子阵列的数量&#34;将是查找每个嵌套向量的大小参数并保持运行计数的问题。
答案 1 :(得分:0)
是的,可以计算数组中子数组的数量吗?
以下是用PHP编写的示例
$ jar -i /tmp/vtk-dicom/bin/lib/vtkdicom.jar
java.io.FileNotFoundException: /tmp/vtk-dicom/bin/lib/usr/share/java/vtk.jar (No such file or directory)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:215)
at java.util.zip.ZipFile.<init>(ZipFile.java:145)
at java.util.jar.JarFile.<init>(JarFile.java:154)
at java.util.jar.JarFile.<init>(JarFile.java:91)
at sun.tools.jar.Main.getJarPath(Main.java:1052)
at sun.tools.jar.Main.getJarPath(Main.java:1068)
at sun.tools.jar.Main.genIndex(Main.java:1084)
at sun.tools.jar.Main.run(Main.java:269)
at sun.tools.jar.Main.main(Main.java:1177)