【问题标题】:Fill 3D array from list{int, int, int} in loop在循环中从 list{int, int, int} 填充 3D 数组
【发布时间】:2013-09-26 02:20:18
【问题描述】:

我有一个 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 ];

【问题讨论】:

  • 为什么要将这些值复制到 3D 数组中? “坐标” [a, b, c] 的值是多少?
  • 什么样的List&lt;int,int,int&gt;?我不清楚。
  • @DannyVarod 这似乎不是 OP 在这里想要做的。
  • @pswg 这似乎是一个私人的重塑案例,他/她不是一个长度为 A*3 的数组,而是 3 个长度为 A 的数组。除此之外,当然,还有是3D输出矩阵的问题,这里的结果应该是2D的。

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


【解决方案1】:

您的 int[,,] 是一个 3 维数组,但您似乎只处理 2 维数据,所以 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;
}

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多