2

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

4

5 回答 5

3

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

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

这里是 MSDN 参考:

多维数组 (C#)

于 2008-09-25T03:30:51.927 回答
2

@Traumapony——我实际上会说真正的性能提升是在一个巨大的平面阵列中获得的,但这可能只是我的 C++ 图像处理根源。

这取决于您需要二维结构来做什么。如果它存储的是第二维中每组项目的大小相同的东西,那么您希望使用大型一维数组之类的东西,因为查找时间更快并且数据管理更容易。喜欢:

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

如果您的第二维具有多个不同的尺寸,那么我所说的都不适用,您应该查看其他一些解决方案。你真的需要知道你的功能需求是什么才能回答这个问题。

于 2008-09-25T03:45:28.257 回答
1

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

int[][] intGrid;

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

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

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

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

于 2008-09-25T03:45:59.283 回答
0

C# 中的数据结构

说真的,我并不是要批评这个问题,但是当我用谷歌搜索时,我在搜索的顶部得到了大量有用的结果:

data structures c#

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

于 2008-09-25T03:33:38.410 回答
0

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

<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>];
于 2008-09-25T03:38:34.950 回答