c++
c++: Jak stworzyć tablicę nie podając z góry liczby jej elementów? Nic konkretnego w internecie nie
mogę znaleźć
6 cze 17:16
Bartek: 1. Poczytaj o tablicach dynamicznych, ale i tak chyba trzeba podać z góry liczbe jej elementów.
2. W takiej sytuacji jak piszesz lepiej korzystać z wektorów / list
6 cze 17:43
Alky: Przy użyciu dynamicznej alokacji pamięci nie trzeba podawać z góry il. argumentów.
Najprościej:
int ilosc;
cin>>ilosc
float *tablica = new float[ilosc];
.
.
.
.
delete[] tablica;
etc
7 cze 17:20
jc: Alky, a co robisz w trzeciej linii? Podajesz wcześniej znany rozmiar tablicy.
Przy okazji, podobny efekt uzyskamy pisząc
int ilosc;
cin >> ilosc;
float tablica[ilosc];
(tablica zostanie utworzona na stosie)
7 cze 17:34
Alky: Tak podaje wcześniej znany rozmiar, ale nie rozmiar podany z góry. Jakby był z góry to już na
starcie byśmy zakładali np. że ilość=12;
"Jak stworzyć tablicę nie podając z góry liczby jej elementów"
" ale i tak chyba trzeba podać z góry liczbe jej elementów"
Natomiast co do tego kodu:
int ilosc;
cin >> ilosc;
float tablica[ilosc];
to na 99% dostaniemy błąd
7 cze 17:50
Alky: ( przypadniem wysłałem )
dostaniemy błąd, bo podczas kompilacji tablica musi już zarezerwować miejsce, a tutaj nie wie
ile tego miejsca ma zarezerwować. W przypadku tworzenia dynamicznego tablica w trakcie dostaje
informacje o wielkości tablicy i tworzy na zadaną ilość elementów
7 cze 17:52
jc: Alky, tablicę możemy tworzyć na stercie (jak w Twoim przykładzie) i na stosie (jak w moim).
Napisz krótki program i zobaczysz, że błędu nie będzie.
7 cze 18:56
Alky: Nie musze pisać, oczywiście masz rację. Coś mi się ubzdurało z tym kodem. Zwracam honor
7 cze 19:23
7 cze 19:37
jc: Pytający, zwykle stos ma ograniczony rozmiar (choć można, nie wiem w jakim stopniu,
zwiększyć jego rozmiar). Dużą tablicę, co już kiedyś mi się zdarzyło, budujemy na stercie.
7 cze 19:47
Pytający:
Zarówno stos jak i sterta zawsze mają ograniczony rozmiar, ale nie wiem, jak to ma się do
tematu.
7 cze 20:04
jc: Odpowiedzią jest chyba drugie zdanie Bartka.
7 cze 20:10
7 cze 20:28