C#中的2d数据结构

时间:2020-03-06 14:42:08  来源:igfitidea点击:

我正在寻找可以帮助我确定使用C#创建2d数据结构的方法的资源。

解决方案

你是说多维数组吗?这很简单:

<type>[,] <name> = new <type>[<first dimenison>,<second dimension>];

这是MSDN参考:

多维数组(C#)

C#中的数据结构

认真地说,我并不想批评这个问题,但是当我搜索以下内容时,在搜索的顶部我就获得了大量有用的结果:

data structures c#

如果我们对特定的数据结构有特定的疑问,我们可能会有更特定的答案...

为了提高性能,最好不要使用多维数组([,]);相反,请使用锯齿状数组。例如。:

<type>[][] <name> = new <type>[<first dimension>];
for (int i = 0; i < <first dimension>; i++)
{
    <name>[i] = new <type>[<second dimension>];
}

要访问:

<type> item = <name>[<first index>][<second index>];

@Traumapony-我实际上是说,真正的性能提升是在一个巨型平面阵列中实现的,但这可能只是我的C ++图像处理的根本所在。

这取决于我们需要2D结构执行的操作。如果要存储第二维中每个项目集都具有相同大小的存储空间,则我们希望使用大型一维数组之类的存储空间,因为查找时间更快,数据管理也更容易。喜欢:

for (y = 0; y < ysize; y++){
   for (x = 0; x < xsize; x++){
      theArray[y*xsize + x] = //some stuff!
   }
}

然后,我们可以通过一次直通执行忽略相邻像素的操作:

totalsize = xsize*ysize;
for (x = 0; x < totalsize; x++){
   theArray[x] = //some stuff!
}

除了在C中,我们可能实际上想调用C ++库来进行这种处理。为此,C ++往往会更快,尤其是在使用intel编译器时。

如果第二维具有多个不同的大小,那么我所说的内容都不适用,我们应该查看其他一些解决方案。我们确实需要知道功能要求是什么,以便能够回答问题。

根据数据的类型,我们可以看一下使用直的二维数组:

int[][] intGrid;

如果需要技巧,可以随时使用泛型方法:

Dictionary<KeyValuePair<int,int>,string>;

这使我们可以将复杂类型放入字典的值部分,尽管这会使索引到元素变得更加困难。

如果要存储空间二维点数据,System.Drawing对二维空间中的点有很多支持。