0

我有一个未知大小的多维数组(3D 矩阵),其中该矩阵中的每个元素都是short int. 矩阵的大小可以近似为10 x 10 x 1,000,000左右。

正如我所看到的,我有两个选择:可变数组(Objective-c)或可变数组(c)。

  1. 对这些数组的读写有什么不同吗?
  2. 当我保存到文件时,这些文件会有多大?

任何建议将不胜感激。

4

2 回答 2

1

可变数组建立在 C 数组上,因此会更慢(尽管速度不会慢很多)。保存此数组时文件有多大?

它会占用您超过 10x10x10000000 字节,因为您必须以可以调用矩阵的方式对其进行编码。这部分真的取决于你。对于 3D 数组,您必须使用特殊字符/格式来表示 3D 数组。这取决于您要如何执行此操作,但是每个数字的每个数字都需要 1 个字节 + 1 个字符用于在同一行中的元素之间放置的空间 +(1 NL 对于数组中的每个第二维 * n) + (3d 值的 1 个其他字符 * n *n)

将每一行粘贴到自己的文件中可能会更容易,然后像往常一样粘贴它下面的列。然后在一个新文件中,我将开始放置 3d 元素,使每行与第二维的列号对齐。这只是我,这取决于你。

于 2013-07-15T17:45:50.947 回答
1
  1. 如果您在创建时知道数组的大小,即您不需要动态更改边界,那么short int具有这些维度的 C 数组将很容易获胜 - 原因例如没有将值编码为对象和直接索引。

  2. 如果您将数组以二进制形式写入文件,那么它将只是元素数量的乘积,sizeof(short int)没有任何开销。如果您还需要存储3 * sizeof(int)- 12 或 24 字节的尺寸。

于 2013-07-15T17:55:44.793 回答