Zwiększenie rozmiaru tablicy dynamicznej z zachowaniem tej samej nazwy

0

Witam

Piszę program, w którym potrzebuję mieć tablicę wskaźników o danej nazwie a jej rozmiar ma się zmieniać zgodnie z potęgami dwójki (1,2,4,8 itp.)
Zdążyłem już ogarnąć, że nadpisywanie nie działa, a przy próbie zrobienia tak:

Typ *nazwa[1];

//działania na tablicy

delete [] nazwa;

Typ *nazwa[2];

itd. jest jakiś problem z użyciem delete.
Jak sobie z tym poradzić?
Wiem, że są biblioteki dzięki którym można to łatwo zrobić, ale nie mogę ich użyć bo jest to program na zaliczenie

Z góry dzięki za pomoc,
Pozdrawiam

0

Rozmiaru tablicy zmienić nie możesz. Może chodzi o Typ**?

0

Wymyśliłem, że chyba najłatwiej będzie mi zrobić

m=pow(2,wysokosc);      //m-maksymalny rozmiar tablicy którego użyje

Typ *tab[m];            

I teraz problem mam taki, że tablica nie chce się utworzyć dla rozmiaru podanego jako zmienna. Muszę wpisać np

Typ *tab[64];

Co powoduje, że program nie będzie mógł spełniać swojej funkcji.

Próbowałem zrobić tablicę wskaźników

Typ  **nazwa=new Typ *[m];

Ale chyba robię coś źle bo jak przypisuje adres pod pole [0]

nazwa [0]=adres;

to w debuggerze zamiast tablicy wskaźników pokazuje mi, że zmienna nazwa jest wskaźnikiem

Popraw jeśli źle myślę

0

nazwa jest wskaźnikiemna Typ*. nazwa[0] jest wskaźnikiem na Typ. C (a także C++) nie rozróżnia wskaźnika na 1 obiekt od wskaźnika na tablicę. Ba, standard nawet mówi, aby wskaźnik na obiekt traktować jak wskaźnik na 1-elementową tablicę.

0

Czyli jak zrobić, żeby w "nazwa" przechować tablicę m wskaźników? Bo nie ogarniam

0
Typ** nazwa = new Typ*[m];
0

Właśnie tak próbuję robić,ale spójrz na ss.

title

Kompilator przyrównał mi tablicę wskaźników poziom do pojedynczego wskaźnika root .
Nie mogę się dostać do pól poziom[0], poziom[1] bo one nie istnieją.
Dlaczego?

0

A nie Możesz użyć std::vector? Jego wielkość zmienia się właśnie, jak potęgi dwójki.

0

To co pokazujesz to widok z debuggera, nie kompilatora. W tym przypadku jest błędny, ale zapewne dlatego, że tylko jeden element jest przypisany i heurystyka uznała, że to wskaźnik na obiekt. Zobacz co napisałem wyżej.

0

Właśnie nie ;/ ale już znalazłem sposób, dzięki za pomoc

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