0
因此,我有一個一維數組代表一個代表遊戲世界的數字三維網格,我可以像這樣訪問各個條目(X,Y,Z):複製代表三維網格的一維數組中的一行值
array[x + width * (y + height * z)]
有沒有一種方法,我可以複製出一整行(例如,爲(1,1)所有的Z值),而循環(我已經通過每一個進入循環。我想保存性能通過檢查空行(全0)並跳過處理它們)?如果可能的話,我寧願不使用鋸齒狀的數組。
因此,我有一個一維數組代表一個代表遊戲世界的數字三維網格,我可以像這樣訪問各個條目(X,Y,Z):複製代表三維網格的一維數組中的一行值
array[x + width * (y + height * z)]
有沒有一種方法,我可以複製出一整行(例如,爲(1,1)所有的Z值),而循環(我已經通過每一個進入循環。我想保存性能通過檢查空行(全0)並跳過處理它們)?如果可能的話,我寧願不使用鋸齒狀的數組。
你必須確保你的數據元素在內存中的線性排列爲行:
row|row|row
...等
然後,您可以使用相同的排序在你的問題中提到數組訪問運算,以確定該行的索引範圍,讓我們把範圍n->m
,然後做一個快速的塊複製的元素n->m
按如下:
memcpy
- C/C++Array.Copy
- C#Arrays.copyOfRange
- Java,適合原生類型;循環複製可能更適合對象。其中的每一個將採取n
和m-n
作爲start
和size
參數,分別。
大多數語言都會有某種類型的塊陣列副本的實現,它在引擎蓋下使用本地代碼,即執行本地副本。
C#或Java還是什麼? Android的?你現在應該知道。 ;) – maaartinus