从循环中的列表{int,int,int}填充3D数组

时间:2013-09-20 16:01:56

标签: c# arrays for-loop multidimensional-array int

我有list{int a,int b,int c},其中包含

等数据
a  b  c
12 23 45
24 45 34
44 56 77
12 34 11
98 35 33
...

我希望将这些数据放在3个数组中 所以,如果我有3个独立的数组,我会做

int[] a = new int[lst.Count];
int[] b = new int[lst.Count];
int[] c = new int[lst.Count]; 
for (int i = 0; i < lst.Count; i++) 
{
    a[i] = lst[i].a;
    b[i] = lst[i].b;
    c[i] = lst[i].c;
}

现在如何将list{int, int, int}复制到3d数组?

int size = lst.Count;
int[, ,] array_t = new int[size , size , size ];

2 个答案:

答案 0 :(得分:2)

你的int[,,]是一个三维数组,但似乎你只处理二维数据,所以int[,]就可以了:

int[,] array_t = new int[lst.Count,3];
for (int i = 0; i < lst.Count; i++) 
{
    array_t[i,0] = a[i];
    array_t[i,1] = b[i];
    array_t[i,2] = c[i];
}

或者跳过中间数组:

int[,] array_t = new int[lst.Count,3];
for (int i = 0; i < lst.Count; i++) 
{
    array_t[i,0] = lst[i].a;
    array_t[i,1] = lst[i].b;
    array_t[i,2] = lst[i].c;
}

答案 1 :(得分:0)

如果我理解正确(我不确定),你似乎想要一个3d数组来表示列表中包含的某些坐标的点。如果你想做的话:

for(int i = 0; i < lst.Count; i++)
    array_t[lst[i].a, lst[i].b, lst[i].c] = 1;

你的数组的其余部分将用零填充。