爲了解決一個問題,我已經在這裏Best/Fastest Way To Change/Access Elements of a Matrix重載operator []對於一維數組
問我用一維數組存儲矩陣。但訪問矩陣的元素變成了一項繁瑣的任務。
我目前存儲我的矩陣陣列中這樣
type[numberOfRows * numberOfColumns] myArray;
並訪問[n][m]
元素我必須鍵入此
blargh = myArray[(n*numberOfRows)+m];
...我想知道如果它的可能以超載/創建新的運營商[][]
,將'翻譯'myArray[n][m]
到myArray[(n*numberOfRows)+m]
。如果可能的話,這會妨礙性能太多。
編輯:原來的'強制聯機'方法產生性能增益。實現雙分度(即matrix[r][c]
語法)
[MethodImpl(MethodImplOptions.AggressiveInlining)]public void set(int x, int y, T value)
{
array[(x * wid) + y] = value;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]public T get(int x, int y)
{
return array[(x*wid) + y];
}
您是否知道[鋸齒狀數組和多維數組](http://msdn.microsoft.com/zh-cn/library/9b9dty7d.aspx)?其中之一可能是你真正想要的。 –
多維數組中的隨機訪問和鋸齒陣列上的列的順序訪問速度太慢。 – Trauer
我希望這兩個都是非常快的。也許混淆以某種方式工作,但實際的隨機/順序訪問會很快。 –