Hvad er en dynamisk matrix?
En dynamisk matrix er en datastruktur, der bruges til computerprogrammering, der indeholder flere computereobjekter som en enkelt gruppe, og som kan ændres til vilje for at imødekomme varierende antal objekter. Gruppen holdes i en enkelt sammenhængende hukommelsesblok, så adgang til elementer er effektiv og hurtig. Dynamiske arrays kaldes også vektorer eller lister, afhængigt af det computersprog, som de bruges i. På trods af disse navne er en bestemt liste eller vektor muligvis ikke et dynamisk array, da lister og vektorer kan implementeres forskelligt fra arrays og fra hinanden.
C ++ indeholder en enkelt dynamisk array-klasse kaldet vektor, som er bosiddende i en gruppe af klasser, der kaldes standardskabelonbiblioteket. Arrayet, der bakker op om denne klasse, kan fås ved hjælp af iteratorer eller med indekser. Dens evne til at ændre størrelsen på efterspørgsel er en stor fordel, men det kan lokke programmerere til en falsk følelse af sikkerhed, fordi den ikke er så robust, som den ser ud til at være. Den dynamiske matrix, der bakker en vektor, kan ikke sikre, at adgangsanmodninger er gyldige. Ligesom statiske arrays kan dynamiske arrays have grænsekontrol og problemer med hukommelseskorruption, hvis et program forsøger at få adgang til hukommelse, der ikke er tildelt til dem.
Java indeholder tre forskellige dynamiske arrayklasser: Vector, ArrayList og CopyOnWriteArrayList. Elementer i matrixen er kun adgang til ved indekser, og forsøg på at få adgang til indekser uden for matrixen vil normalt ikke forårsage hukommelseskorruptionsproblemer. Java Vector klassen svarer stort set til C ++ vektorklassen og er ikke synkroniseret for at muliggøre adgang ved flere tråde. ArrayList og CopyOnWriteArrayList er derimod begge tråd-sikre. Af de tre er CopyOnWriteArrayList den mest arbejdskrævende klasse, fordi den genskaber fuldstændigt den dynamiske matrix hver gang der skrives en ny værdi til matrixen.
Dynamiske arrays implementeres i det væsentlige på samme måde uanset det involverede computersprog, men afhængigt af et bestemt sprog kan der være andre muligheder, der er bygget ovenpå. Ligesom statiske arrays begrænser dynamiske arrays ikke den type objekt, der kan gemmes inde i dem, så længe de alle er af samme type objekt. En programmerer behøver aldrig adgang til et dynamisk array direkte; det kan altid gøres gennem en klasse, der pakker arrayet til let brug. Korrekt brug af disse arrays kan hjælpe en programmør med dataorganisation indenfor kode, og også med at skabe forståelig kode, der egner sig til let vedligeholdelse.