获取多维数组的每个维度的大小

时间:2015-12-10 20:37:21

标签: objective-c arrays multidimensional-array nested-loops

假设我想编写一个函数来使用嵌套循环“解包”(存储或记录,或许)一个多维数组。这个概念很简单,只要我能够在3D阵列的情况下确定阵列的长度,宽度和高度。

在Objective-C中,有一些方法,在传递一个未知大小的多维数组作为方法参数后,确定那些尺寸大小是什么?然后,如上所述,使用嵌套for循环是一件简单的事情。

1 个答案:

答案 0 :(得分:0)

NSArray本质上是一维的,如果你愿意的话,它就是一个向量,并且正如约翰所指出的,它有一个count属性。要模拟多维数组,您当然可以使用NSArray *rows包含多个NSAarray *columnElement等等。这不是一个多维数组,更像是一个树型结构,但你可以把它称为数组。但我不认为这就是你所要求的。

我认为您正在考虑指针引用遍历的C样式内存缓冲区。这本身也是一维结构,因为记忆地址是一维的。在许多情况下,这样的缓冲区可以被视为2维或更多维,你说每50个字节是一行,所以位置0是第1行col 1,第49位是第1行col 50,第50位是第2行col 1等。

在这种情况下,由于您作为设计者将缓冲区的这种解释定义为二维数组,因此无法单独从缓冲区派生结构。您必须将缓冲区的排列作为元数据存储在其他变量中,或者在缓冲区中强加某种形式的分隔符字符,例如:新行的换行符。和新的列元素或类似的逗号(但在我看来它不再是一个数组,它是一个文件格式,这里是一个csv文件)。