Skocz do zawartości
aurel

C++ I Dynamiczne Tablice

Rekomendowane odpowiedzi

jeśli to nie wymóg akademicki.. to proponuję przyjrzeć się STL vector... Unikniesz w ten sposób masy problemów a do tego będziesz programować na normalnym poziomie :). Dziś mało kto bawi się w tablice dynamiczne - zazwyczaj chyba tylko studenci :). Pomijam specyficzne zastosowania takich tablic gdy są lepsze wydajnościowo od vectorów... Na ogół jendak stosuje się vectory STLowe lub microsoftowe... :)

 

no dobra mały przykład i porównanie... :)

 

int wielkosc_tablicy = 10;int* tablica_dynamiczna = new int[wielkosc_tablicy * sizeof(int)];if( NULL==tablica_dynamiczna ) return BLAD_przydzielania_pamieci;for(int i=0; i<wielkosc_tablicy; ++i)	tablica_dynamiczna[i] = i;// tu kod programudelete [] tablica_dynamiczna;  // usuniecie tablicy KONIECZNE zeby nie bylo wyciekow pamieci // dodam ze to najczesciej jest niezauwaazane do czasu az cały program sie sypie

i wersja nowoczesna... :)

 

int wielkosc_tablicy = 10;vector<int> tablica_dynamiczna;for(int i=0; i<wielkosc_tablicy; ++i)	tablica_dynamiczna.push_back(i);// tu kod programu

wsio... jak widać drugi kod znacznie prostszy, a zarazem bezpieczny. Jako że vector jest tzw szablonem, do tego jest klasą to ma kilka ciekawych mozliwosci, lepszych niz tablica. Po pierwsze to ma zmienny rozmiar.. przydzielaniem pamięci zajmuje się klasa vector a Ciebie w ogóle to nei interesuje jak ona to robi.. Po prostu wrzucasz sobie elementy do vectora i już... Odczyt moze być jak w zwykłej tablicy, kilka przykładów poniżej...

cout<<tablica_dynamiczna[4];  // dostęp normalnie jak w tablicycout<<tablica_dynamiczna.at(4); // lub z kontrolą indeksu.. aby nie wyskoczyć poza ilosc elementów w tablicy

Jeśli po ustaleniu wielkosci tablicy zechcesz zmienic jej wielkosc to w przypadku zwykłej tablicy musisz realokowac pamiec... zrobic nowa tablice wieksza i tamtą starą skopiować i usunac... czyli kupa miejsc gdzie mozna zrobić błąd.. W przypadku wektorów po prostu wstawiasz nowe elementy... Mozesz tez wstawiac je do srodka, na początku, usuwac, czyscic wsystkie... wszystko co potrzeba :)

Edytowane przez PelzaK

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...