Co to jest tablica dynamiczna?
Tablica dynamiczna jest strukturą danych stosowaną w programowaniu komputerowym, która zawiera wiele obiektów komputerowych jako jedną grupę i można dowolnie zmieniać ich rozmiar, aby pomieścić różną liczbę obiektów. Grupa jest przechowywana w jednym ciągłym bloku pamięci, więc dostęp do elementów jest wydajny i szybki. Tablice dynamiczne są również nazywane wektorami lub listami, w zależności od języka komputera, w którym są używane. Pomimo tych nazw, żadna konkretna lista lub wektor może nie być tablicą dynamiczną, ponieważ listy i wektory mogą być implementowane inaczej niż tablice i od siebie nawzajem.
C ++ zawiera pojedynczą dynamiczną klasę tablicową o nazwie wektor, która znajduje się w grupie klas zwanej standardową biblioteką szablonów. Dostęp do tablicy popierającej tę klasę można uzyskać za pomocą iteratorów lub indeksów. Jego zdolność do zmiany rozmiaru na żądanie jest wielką zaletą, ale może zwabić programistów w fałszywe poczucie bezpieczeństwa, ponieważ nie jest tak solidna, jak się wydaje. Dynamiczna tablica wspierająca wektor nie może zapewnić poprawności żądań dostępu. Podobnie jak tablice statyczne, tablice dynamiczne mogą mieć problemy ze sprawdzaniem granic i uszkodzeniem pamięci, jeśli program spróbuje uzyskać dostęp do pamięci, która nie została dla nich przydzielona.
Java zawiera trzy różne klasy tablic dynamicznych: Vector, ArrayList i CopyOnWriteArrayList. Dostęp do elementów w tablicy mają tylko indeksy, a próba uzyskania dostępu do indeksów poza tablicą zazwyczaj nie powoduje problemów z pamięcią. Klasa Vector Java jest w przybliżeniu równoważna klasie wektorowej C ++ i nie jest synchronizowana, aby umożliwić dostęp przez wiele wątków. Natomiast ArrayList i CopyOnWriteArrayList są bezpieczne dla wątków. Spośród nich CopyOnWriteArrayList jest najbardziej pracochłonną klasą, ponieważ całkowicie odtwarza tablicę dynamiczną za każdym razem, gdy do tablicy jest zapisywana nowa wartość.
Tablice dynamiczne są implementowane zasadniczo w ten sam sposób, niezależnie od używanego języka komputerowego, ale w zależności od konkretnego języka mogą być na nim wbudowane inne możliwości. Podobnie jak tablice statyczne, tablice dynamiczne nie ograniczają typu obiektu, który można w nich przechowywać, o ile wszystkie obiekty są tego samego typu. Programista nigdy nie musi uzyskiwać bezpośredniego dostępu do tablicy dynamicznej; zawsze można tego dokonać za pomocą klasy, która otacza tablicę w celu łatwego użycia. Właściwe użycie tych tablic może pomóc programiście w organizacji danych wewnątrz kodu, a także w tworzeniu zrozumiałego kodu, który nadaje się do łatwej konserwacji.