C# 一维数组作为多维数组的等价物?
我有一个数组定义如下:C# 一维数组作为多维数组的等价物?,c#,arrays,C#,Arrays,我有一个数组定义如下: Tile[,] Tiles 它在X轴上包含100个元素,在Y轴上包含150个元素。虽然这在我的游戏中不同于地图,但我始终知道X轴和Y轴上的瓷砖数量 鉴于此,如何将上述数组转换为一维数组,并遍历它们?我知道一维数组比多维数组快2倍,这对我的游戏性能意义重大。此外,一维数组可以与并行计算一起使用。如果Y轴上的项目数对于每个X是固定的,您可以试试这个。 假设a=X轴上的计数,b=Y轴上的计数 您可以定义Tiles=newtile[a*b] 然后平铺[x,y]变成平铺[x*b+
Tile[,] Tiles
它在X轴上包含100个元素,在Y轴上包含150个元素。虽然这在我的游戏中不同于地图,但我始终知道X轴和Y轴上的瓷砖数量
鉴于此,如何将上述数组转换为一维数组,并遍历它们?我知道一维数组比多维数组快2倍,这对我的游戏性能意义重大。此外,一维数组可以与并行计算一起使用。如果Y轴上的项目数对于每个X是固定的,您可以试试这个。
假设a=X轴上的计数,b=Y轴上的计数
您可以定义
Tiles=newtile[a*b]代码>
然后平铺[x,y]
变成平铺[x*b+y]
如果y轴上的项目计数对于每个x都是固定的,您可以试试这个。
假设a=X轴上的计数,b=Y轴上的计数
您可以定义Tiles=newtile[a*b]代码>
然后Tiles[x,y]
变成Tiles[x*b+y]
首先你必须知道2d数组的大小,假设:-(2x3)
3是二维阵列的物理尺寸
int OneDArrayIndex = (3*xPosition)+ yPosition ;
这将给出1D数组的索引,您可以在数组中的该索引处插入值
希望这有帮助….首先,您必须知道2d数组的大小,假设:-(2x3)
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;
}
3是二维阵列的物理尺寸
int OneDArrayIndex = (3*xPosition)+ yPosition ;
这将给出1D数组的索引,您可以在数组中的该索引处插入值
希望这有帮助….私有静态int[]TwoDArray数组(int[]TwoDArray,int-xSize,int-ySize)
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;
}
{
int xIndex=0;
int-OneDArrayIndex=0;
int[]oneDArray=newint[xSize*ySize];
对于(int-yIndex=0;yIndex
私有静态int[]TwoDArray ToonedArray(int[]TwoDArray,int-xSize,int-ySize)
{
int xIndex=0;
int-OneDArrayIndex=0;
int[]oneDArray=newint[xSize*ySize];
对于(int-yIndex=0;yIndex
我怀疑您的应用程序性能会因为使用二维数组而降低:)使用一维数组,只会使代码更难阅读和维护……我想知道“一维数组比多维数组快2倍”的来源。你暗示多维数组不能用于并行计算的来源。很高兴知道您是如何使用阵列来针对特定场景进行优化的。我怀疑您的应用程序性能会因为使用二维阵列而降低:)使用一维阵列,只会使您的代码更难阅读和维护……我想知道它的源代码“一维数组的速度是多维数组的2倍”。这是您暗示多维数组不能用于并行计算的来源。如果您知道如何使用数组来针对特定场景进行优化,那就太好了。