我正在寻找可以帮助我确定使用C#创建二维数据结构的方法的资源。
答案 0 :(得分:3)
你的意思是多维数组吗?这很简单:
<type>[,] <name> = new <type>[<first dimenison>,<second dimension>];
这是MSDN参考:
答案 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)
说真的,我并没有试图批评这个问题,但是当我用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>];