Wpis z mikrobloga

#programowanie #cpp
Mireczki mam pytanko ponieważ uczę się dopiero i chce wiedzieć czy dobrze robię. Mam tablice i dynamicznie zwiększam sobie jej rozmiar z czym nie miałem problemu. Zastanawiałem się tylko jak ją pomniejszać. W końcu wpadłem na pomysł że
zwyczajnie kopiuję tablice ale o jeden mniej a starą usuwam. Kod poniżej nie wiem jak go w spoiler dać xD. Chce wiedzieć tylko czy nie popełniam jakiegoś błędu który może zagrozić jakimiś wyciekami pamięci.

int *zmniejsz_tablice(int* tab, int &rozmiar)
{
rozmiar--;
int *nowytab = new int[rozmiar];
for (int i=0; i<rozmiar;i++)
{
nowy
tab[i] = tab[i];
}
delete [] tab;
return nowy_tab;
}
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@DoubleWu: po pierwsze primo to typ tablicy to int* nie int
Działać będzie, ale oczywiście można to zrobić lepiej (szybciej) chociażby przy użyciu odpowiednich funkcji do kopiowania
  • Odpowiedz
@DoubleWu: zamiast kopiowac za kazdym razem, zapamietuj jak duzo moze pomiescic elementow tablica (capacity), tzn. jak duzo pamieci zaalokowales dla tej tablicy i jak duzo elementow w tej tablicy juz jest.

struct Tablica {
int *tab;
unsigned int rozmiar;
unsigned int rozmiar_zaalokowany;
};
  • Odpowiedz