Dynamiczna tablica wskaźników do dynamicznych tablic mojego typu

0

Witam
No więc próbuje zaimplementować sieć neuronową i wymyśliłem że stworze sobie klasę sieć a w niej powstawiam neurony(klasa neuron)i tu mam mały problem bo stworzyłem

Neuron **warstwy = new Neuron[liczba_warstw] 

powyższy kod w konstruktorze sieci z argumentem liczba_warstw
warstwy mają oznaczać jak sama nazwa wskazuje poszczególne warstwy neuronów w sieci
a w każdej warstwie różne ilości neuronów:

warstwy[i] = new Neuron[liczba_kom];

powyższy kod znajduje sie w metodzie set_warstwa(liczba kom);
Problem w tym ze wstawiam neuron do tych mojich warstw za pomoca jakiejs tam metody i rzeczywiscie te neurony tam są ale niewiem jak sprawić by iterować taką tablice, próbowałem porównywać typ czymś takim

 if (typeid(warstwy[0][0]) == typeid(Neuron)

(wartswy [0][0] w tym przypadku reprezentują pierwszy Neuron pierwszej wartwy) spodziewałem się że gdy wyskocze po zakres tablicy to taki warunek zwróci false a tu jakimś cudem nawet dla "warstwy[0][999]" okazuje się że w pierwszej warstwie na pozycji 999 komórki też jest Neuron którego tam nie wkładałem mało tego zakres tablicy czyli argument liczba_kom w metodzie wstawiającej tablice neuronow była mniejsza.
Z iterowaniem warstw niemam problemu bo zapisuje liczbe wartw w polu klasy Siec, ale jak iterować tablice z neuronami skoro w metodzie set_wartswa(liczba_kom) argument wykorzystuje do:

warstwy[i] = new Neuron[liczba_kom];

i go nie zapisuje nigdzie.

Będe wdzięczny jeśli ktoś pomyśli razem ze mną

0

Bo pierwsze primo po co to robisz na wielowymiarowej, czy nie wystarczyło zrobić tego na jednowymiarowej? Po drugie jaki zrobileś warunek żeby wyświetlało Ci poszczególne neurony? Jakiej instrukcji użyłeś? Następnie, cytuję: " (wartswy [0][0] w tym przypadku reprezentują pierwszy Neuron pierwszej wartwy) spodziewałem się że gdy wyskocze po zakres tablicy to taki warunek zwróci false a tu jakimś cudem nawet dla "warstwy[0][999] " zrób sobei wobec tego warunek że jeżeli warstwa [][]>100 {return True!=1}. Czy posiadasz destruktor w swojej klasie? Jeśli nie to to sobie go zdefiniuj wtedy będzie mógł "zwolnić" pamięć.

1

typeid przydaje się tylko do sprawdzania typów polimorficznych, nie zadziała to tak, jak chcesz. Jeśli nigdzie nie przechowujesz rozmiaru warstwy, to zwyczajnie nie będziesz go znał. Albo zapisuj długości każdej tablicy z osobna, albo zastosuj jakiś vector, który sam przechowuje swój rozmiar.

0

Dzięki za odpowiedzi

Ale wciąż potrzebuję waszej pomocy....bo uparłem się na zrobienie tablicy przechowujacą tablice różnych wymiarów(nie tablice 2 wymiarową) więc pomyślałem że stworzę vector<vector> warstwy;
i wstawie tam vectory z neuronami no ale tak się nie da.
Pomożcie....bo moje kombinowania stały się już nie efektywne.

Pozdrawiam

Nie mogłem edytować, więc dopisze mini podsumowanie
Tablica wskaźników do tablic typu neuron odpada bo w tablicach typu neuron nie będe wiedział w którym miejscu wyskakuje poza tablice....
więc może tablica wskaźników do vectorów , można tak?

0

&Endrju a jak zapisać że vector przechwouje vectory?...(nie pytaj mnie bo gdybym potrafił odpowiedzieć to bym nie pytał =) )

0

rzeczywiśćie , próbowałem tak napisać ale nie zwróciłem uwagi że tworze operator >> nie wstawiając spacji...Dziękuje

0

lol nie czytasz albo nie rozumiesz komunikatow kompilatora

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