2015-12-10 85 views
-1

假設我想編寫一個函數來使用嵌套循環「解包」(可能存儲或記錄)多維數組。這個概念很簡單,只要我能夠確定,在3D數組的情況下,數組的長度,寬度和高度。獲取多維數組的每個維度的大小

在Objective-C中,有沒有辦法在傳入未知大小的多維數組作爲方法參數之後,確定這些維度大小是多少?然後,如前所述,使用嵌套循環會很簡單。

+0

'NSArray'或C數組,或其他? –

+0

@JoshCaswell讓我們走一個NSArray。如果C中有功能來實現這一點,我可以使用Objc或標準C數組。我們可以假設這個數組是不可變的。 –

+1

好吧,'NSArray'會告訴你它的['count'](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/#//apple_ref/occ/instp/NSArray/count),內部的'NSArray'也可以這樣做。我不確定你還需要什麼。有沒有遇到更深層次的問題? –

回答

0

NSArray天生就是一維的,如果你喜歡的話,也是一個向量,正如John所說它有一個count屬性。要模擬一個多維數組,你當然可以有一個NSArray *rows,其中包含NSAarray *columnElement等等。這不是一個真正的多維數組,更像是一個樹型結構,但您可以將其稱爲數組。但我不認爲這就是你要問的。

我想你正在考慮C指針引用遍歷的內存緩衝區。這也是內在的一維結構,因爲memeory尋址是一維的。在很多情況下,這樣的緩衝區可以被視爲2維或更多的維度,以至於你說每50個字節是一行,所以位置0是行1列1,位置49是行1列50,位置50是行2列1等

在這種情況下,因爲您作爲設計人員將緩衝區的這種解釋定義爲二維數組,所以無法從緩衝區單獨派生結構。要麼你必須將緩衝區的排列作爲元數據存儲在其他變量中,要麼在緩衝區中加入某種形式的分隔符。新行換行。和新的列元素或類似的逗號(但它不再是我認爲這是一個文件格式的數組,在這裏是一個csv文件)。