作为多维数组的等价物的一维数组
本文关键字:等价物 一维数组 数组 | 更新日期: 2023-09-27 17:51:22
我有一个数组定义如下:
Tile[,] Tiles
在X轴上包含100个元素,在Y轴上包含150个元素。虽然这在我的游戏中是不同的,但我总是知道X轴和Y轴上的贴图数量。
考虑到这一点,我如何将上面的数组转换为单维数组,并遍历它们?我知道单维数组比多维数组快2倍,这对我的游戏性能来说意义重大。此外,单维数组可以用于并行计算。
如果Y轴上的项目数在每个X轴上都是固定的,你可以试试这个。
假设a = 在X轴上计数, b = 在Y轴上计数;
你可以定义Tiles = new Tile[a*b];
那么Tiles[x,y]
就变成了Tiles[x*b+y]
private static int[] TwoDArrayToOneDArray( int[][] TwoDArray, int xSize, int ySize)
{
int xIndex = 0;
int OneDArrayIndex = 0;
int[] oneDArray = new int[xSize * ySize];
for (int yIndex = 0; yIndex < ySize && xIndex < xSize; yIndex++)
{
OneDArrayIndex = (ySize * xIndex) + yIndex;
oneDArray[OneDArrayIndex] = TwoDArray[xIndex][yIndex];
if (yIndex == ySize - 1)
{
yIndex = 0;
xIndex = xIndex++;
}
}
return oneDArray;
}
首先你必须知道这里的2d数组的大小假设:- (2x3)
//xPosition and yPosition are the index of 2D array (1,2)
int xPosition = 1;
int yPosition = 2;
3是2d数组的ySize
int OneDArrayIndex = (3*xPosition)+ yPosition ;
这将给出一维数组的索引,你可以在这个索引上插入你的值。
希望对您有所帮助.....