我有一個3D數據數組,代表一堆二維數據。在這種特殊情況下,堆棧只包含一個元素。 將此數據映射到線性陣列的最快方法是什麼?如何將3D陣列映射到線性陣列?
我正打算採取以下辦法:
public static int[] ToBuffer<(this int[, ,] buffer3D, int w, int h)
{
int[] buffer = new int[w * h * 1];
for (int i = 0; i < (w * h); i++)
{
buffer[i] = buffer3D[(int)Math.Floor(i/(double)w), i % w, 0];
}
return buffer;
}
但它發生,我認爲可能有一些方法來充分利用數據的方式已經存儲在內存中。有沒有其他的映射方法應該在csharp中使用?
你可以嘗試'回報(INT [])buffer3D.Clone();'? – 2014-11-02 23:37:46
可能的重複http://stackoverflow.com/q/4674394/395718 – Dialecticus 2014-11-02 23:43:58
@BatuhanTasdoven不,不幸的是,這導致了一個'InvalidCastException':無法投射類型爲'System.Int [,,]'的對象來鍵入'System。 INT []」。 – dionys 2014-11-03 00:04:08