我有一个未知大小的多维数组(3D 矩阵),其中该矩阵中的每个元素都是short int
. 矩阵的大小可以近似为10 x 10 x 1,000,000左右。
正如我所看到的,我有两个选择:可变数组(Objective-c)或可变数组(c)。
- 对这些数组的读写有什么不同吗?
- 当我保存到文件时,这些文件会有多大?
任何建议将不胜感激。
我有一个未知大小的多维数组(3D 矩阵),其中该矩阵中的每个元素都是short int
. 矩阵的大小可以近似为10 x 10 x 1,000,000左右。
正如我所看到的,我有两个选择:可变数组(Objective-c)或可变数组(c)。
任何建议将不胜感激。
可变数组建立在 C 数组上,因此会更慢(尽管速度不会慢很多)。保存此数组时文件有多大?
它会占用您超过 10x10x10000000 字节,因为您必须以可以调用矩阵的方式对其进行编码。这部分真的取决于你。对于 3D 数组,您必须使用特殊字符/格式来表示 3D 数组。这取决于您要如何执行此操作,但是每个数字的每个数字都需要 1 个字节 + 1 个字符用于在同一行中的元素之间放置的空间 +(1 NL 对于数组中的每个第二维 * n) + (3d 值的 1 个其他字符 * n *n)
将每一行粘贴到自己的文件中可能会更容易,然后像往常一样粘贴它下面的列。然后在一个新文件中,我将开始放置 3d 元素,使每行与第二维的列号对齐。这只是我,这取决于你。
如果您在创建时知道数组的大小,即您不需要动态更改边界,那么short int
具有这些维度的 C 数组将很容易获胜 - 原因例如没有将值编码为对象和直接索引。
如果您将数组以二进制形式写入文件,那么它将只是元素数量的乘积,sizeof(short int)
没有任何开销。如果您还需要存储3 * sizeof(int)
- 12 或 24 字节的尺寸。