2013-09-20 4 views
0

У меня есть list{int a,int b,int c}, который содержит данные, такие какЗаполните 3D массив из списка {INT, INT, INT} в цикле

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

Я хочу, чтобы эти данные в 3-х массивов , так что если у меня есть 3 отделенных массивов I бы

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

Почему вы хотите скопировать эти значения в 3D-массив? Какое значение будет занимать «координаты» [a, b, c]? – ppetrov

+1

Что это такое? Список '? Мне это непонятно. –

+0

Возможный дубликат [Как изменить форму массива в C#] (http://stackoverflow.com/questions/6522729/how-to-reshape-an-array-in-c-sharp) –

ответ

2

Вашего 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; 
} 
0

Если я правильно вас понял (я не уверен), вы, кажется, хотите иметь 3D-массив, представляющие точки в определенных координатах, содержащихся в списке. Если это то, что вы хотите сделать:

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

остальная часть вашего массива будет заполнена нулями.

Смежные вопросы