Skocz do zawartości

Ankieta nt. metod inicjacji tablic jedno i wielowymiarowych


Metody inicjacji tablic  

7 użytkowników zagłosowało

  1. 1. Jaka metoda inicjacji tablic jest według was najlepsza?

    • tab[maksymalny_rozmiar] - zużycie pamięci stałe. Wykorzystujemy tylko fragment.
      2
    • tab[n] - zużycie pamięci zależne od wymaganego rozmiaru.
      4
    • new int [] - dynamiczna. Mamy możliwość usunięcia jej w trakcie trwania programu.
      2


Rekomendowane odpowiedzi

Opublikowano

Na obozie informatycznym miałem dylemat z kolegami z OIG'a i OI. Chodziło o to czy można zainicjować tablicę gdzie jej rozmiar będzie równy wartości danej zmiennej - tab[n]. Ja z kolegą z OIG'a byliśmy za tym - sam bardzo często to praktykuję. Koledzy z OI twierdzili, że to jest błąd. Skończyło się na tym, że pokazałem kod źródłowy i jak to działa. Temat jednak mnie trochę zaciekawił i chciałbym wiedzieć jak wy inicjujecie coś takiego jak proste tablice. Dałem 3 możliwości jakie ja najczęściej stosuję. Jeśli ktoś zna inne to proszę pisać.

 

Według mnie argumentem za używaniem tab[n] czyli tablicy w której to rozmiar byłby równy wartości danej zmiennej jest to, że w przypadku np. skryptu po stronie serwera (WWW etc.) gdzie kod jest uruchamiany tyle razy ile mamy zapytań do serwera - dane mają różny rozmiar i jedne mogą zużyć mniej pamięci niż inne, ale przy praktyce stosowanej przez finalistów OI kosz zużycia pamięci przy każdym zapytaniu byłby taki sam.

 

Rozumiem, gdyby pisali w C, a nie w C++...

Opublikowano

0.0 Ale o co biega? Dla alokacji na stosie rozmiar musi być znany przy kompilacji, na stercie można alokować dynamicznie podczas działania programu. Od razu widać plusy i minusy danej metody+ zastosowanie więc po co jakaś dziwna ankieta? Zresztą jest ona kompletnie bez sensu, równie dobrze można zadać pytanie:

Lepiej dostać się w dane miejsce: 1)samolotem 2) pociągiem 3) samochodem.

Opublikowano

Generalnie druga opcja odpada na starcie. Tak jak powiedział Will. Rozmiar tablicy deklarowanej statycznie musi być znany w czasie kompilacji więc nie mozesz podstawić tam zmiennej. Taki kod czasem działa, ale nie powienien. Jak mi moi uczniowie na różnych obozach tego używali to nieraz powstawały tak zwane "demony w kodzie". Działy się rzeczy niesamowite. I nic dziwnego. Rozmiar tablicy jako zmienna to zło największe z możliwych. ;)

 

Opcja ostatnia jest zazwiczaj najlepsza. Na wszelkich olimpiadach zalecana jest jednak opcja pierwsza i przedstawiana właściwie jako jedyna słuszna. Ale Uwaga! Przy robieniu zadanek z konkursów. Przy pisaniu normalnych aplikacji już nie jest taka dobra. Chodzi o to, że jak piszesz takie zadanko na OIG to pierwsza opcja jest najbezpieczniejsza. Dajesz rozmiar znany z ograniczeń z treści zadania (plus 1) i o nic się nie boisz.

Opublikowano

Dzięki Platyna. Tego szukałem. Dopiero teraz dowiaduje się jaki to mój kod jest anarchiczny stosując ciągłe tab[n]. Jakoś nigdy nie miałem "demonów".

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...