C#中的2d数据结构

时间:2008-09-25 03:25:35

标签: c# data-structures

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

5 个答案:

答案 0 :(得分:3)

你的意思是多维数组吗?这很简单:

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

这是MSDN参考:

Multidimensional Arrays (C#)

答案 1 :(得分:2)

@ Traumapony--我实际上声明真正的性能提升是在一个巨大的平面阵列中进行的,但这可能只是我的C ++图像处理根源显示。

这取决于您需要2D结构做什么。如果它存储的是第二维中每组项目大小相同的东西,那么您希望使用类似大型1D阵列的东西,因为搜索时间更快,数据管理更容易。像:

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编译器。

如果您的第二个维度有多个不同的大小,那么我说的任何内容都不适用,您应该看看其他一些解决方案。你真的需要知道你的功能需求是什么,以便能够回答这个问题。

答案 2 :(得分:1)

根据数据的类型,您可以查看使用直的二维数组:

int[][] intGrid;

如果你需要变得棘手,你可以随时采用泛型方法:

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

这允许您将复杂类型放在字典的值部分中,尽管使元素索引更加困难。

如果您希望存储空间2d点数据,System.Drawing可以为2d空间中的点提供大量支持。

答案 3 :(得分:0)

Data Structures in C#

说真的,我并没有试图批评这个问题,但是当我用Google搜索时,我在搜索的顶部获得了大量有用的结果:

data structures c#

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

答案 4 :(得分:0)

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

<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>];