Skocz do zawartości

Ankieta nt. metod inicjacji tablic jedno i wielowymiarowych


Raalsky

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

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++...

Odnośnik do komentarza
Udostępnij na innych stronach

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.

Odnośnik do komentarza
Udostępnij na innych stronach

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.

Odnośnik do komentarza
Udostępnij na innych stronach

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ę...