2014-01-26 18 views
0

因此,我有一個一維數組代表一個代表遊戲世界的數字三維網格,我可以像這樣訪問各個條目(X,Y,Z):複製代表三維網格的一維數組中的一行值

array[x + width * (y + height * z)] 

有沒有一種方法,我可以複製出一整行(例如,爲(1,1)所有的Z值),而循環(我已經通過每一個進入循環。我想保存性能通過檢查空行(全0)並跳過處理它們)?如果可能的話,我寧願不使用鋸齒狀的數組。

+0

C#或Java還是什麼? Android的?你現在應該知道。 ;) – maaartinus

回答

0

你必須確保你的數據元素在內存中的線性排列爲行:

row|row|row ...等

然後,您可以使用相同的排序在你的問題中提到數組訪問運算,以確定該行的索引範圍,讓我們把範圍n->m,然後做一個快速的塊複製的元素n->m按如下:

  • memcpy - C/C++
  • Array.Copy - C#
  • Arrays.copyOfRange - Java,適合原生類型;循環複製可能更適合對象。

其中的每一個將採取nm-n作爲startsize參數,分別。

大多數語言都會有某種類型的塊陣列副本的實現,它在引擎蓋下使用本地代碼,即執行本地副本

相關問題