matematykaszkolna.pl
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
Pytający: Alky, nic Ci się nie ubzdurało, po prostu masz standardowe nawyki: https://stackoverflow.com/questions/1887097/why-arent-variable-length-arrays-part-of-the-c-standard https://stackoverflow.com/a/5368571 Znaczy się czy będzie błąd zależy od kompilatora i ustawień kompilacji (zgodność ze standardem).
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