3 wymiarowa, dynamiczna tablica

0

Witam,

Moje pytanie dotyczy tworzenia tablicy o 3 wymiarowej tablicy o dowolnym rozmiarze.

Normalnie, zdefiniowałbym ją tak:

float[,,] tablica = new float[2, 2, 2];

Jednak rozmiar mojej tablicy zależy do zmiennej "rozmiar" - coś w ten deseń:

float[,,] tablica = new float[rozmiar, 2, 2];

Dobrym rozwiązaniem wydaje się użycie List(tutaj dla przypadku jednowymiarowego):

List<double> list = new List<double>();
list.Add(1);
list.Add(2);
list.Add(3);

Jak stworzyć listę, tak jak powyżej, ale w ten sposób, żebym mógł operować na 3 wymiarach?

Dziękuję.

0

Chodzi Ci o listę 3 wymiarową?

0

Niech będzie lista 3 wymiarowa.

0

Jeżeli tablica to można zrobić tak:

 object[][][] t = new t[3][][];

t[0] = new object[3][];
t[0][0] = new object[3];
0

Jednak rozmiar mojej tablicy zależy do zmiennej "rozmiar" - coś w ten deseń:

float[,,] tablica = new float[rozmiar, 2, 2];

No ale o co chodzi, przecież to prawidłowy kod.

0

Hm, niezłe.

Czy dobrym rozwiązaniem będzie np. stworzenie kolekcji używając klasy Dictionary? Dodawałbym sobie kolejne klasy z tablicami dwuwymiarowymi do listy i w łatwiejszy sposób mógłbym się odwoływać do poszczególnych pozycji w liście.

Co Pan o tym sądzi?

0
Zetrix napisał(a):

Czy dobrym rozwiązaniem będzie np. stworzenie kolekcji używając klasy Dictionary? Dodawałbym sobie kolejne klasy z tablicami dwuwymiarowymi do listy i w łatwiejszy sposób mógłbym się odwoływać do poszczególnych pozycji w liście.

A potrzebujesz przechowywać te dane jako pary klucz-wartość? Bo jeśli nie, to słownik jest bez sensu.

Jeśli chcesz sobie dodawać kolejne tablice dwuwymiarowe w trakcie działania aplikacji, to może potrzebujesz listę tablic dwuwymiarowych:

var tablica1 = new double[2,3] { { 1.0, 2.0, 3.0, }, { 4.0, 5.0, 6.0 } };
var tablica2 = new[,] { { 7.0, 8.0, 9.0, }, { 10.0, 11.0, 12.0 } };

var dane = new List<double[,]>();
dane.Add(tablica1);
dane.Add(tablica2);

foreach (var doublese in dane)
{
    for (int i = 0; i < doublese.GetLength(0); i++)
    {
        for (int j = 0; j < doublese.GetLength(1); j++)
        {
            Console.WriteLine(doublese[i, j]);
        }
    }
    Console.WriteLine("Koniec tablicy");
}
0

A potrzebujesz przechowywać te dane jako pary klucz-wartość? Bo jeśli nie, to słownik jest bez sensu.

W sumie w moim przypadku to byłoby wygodniejsze rozwiązanie.

Jeszcze to dogłębnie przemyślę i wybiorę odpowiednią metodę przechowywania danych.

Dziękuję za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1