Hva er en dynamisk matrise?
En dynamisk matrise er en datastruktur som brukes i dataprogrammering som inneholder flere databehandlingsobjekter som en enkelt gruppe, og som kan endres størrelse etter ønske for å imøtekomme varierende antall objekter. Gruppen holdes i en enkelt sammenhengende hukommelsesblokk, så tilgang til elementer er effektiv og rask. Dynamiske matriser kalles også vektorer eller lister, avhengig av dataspråk de brukes i. Til tross for disse navnene, er det mulig at en bestemt liste eller vektor ikke er en dynamisk matrise, siden lister og vektorer kan implementeres forskjellig fra matriser og fra hverandre.
C ++ inneholder en enkelt dynamisk matriseklasse kalt vektor, som er bosatt i en gruppe klasser kalt standardmalbiblioteket. Arrayen som støtter denne klassen kan nås av iteratorer eller av indekser. Evnen til å endre størrelse på etterspørsel er en stor fordel, men det kan lokke programmerere til en falsk følelse av sikkerhet fordi den ikke er så robust som den ser ut til å være. Den dynamiske arrayen som støtter en vektor, kan ikke sikre at tilgangsforespørsler er gyldige. I likhet med statiske matriser, kan dynamiske matriser ha grensekontroll og problemer med hukommelseskorrupsjon hvis et program prøver å få tilgang til minne som ikke er tildelt for dem.
Java inneholder tre forskjellige dynamiske matriseklasser: Vector, ArrayList og CopyOnWriteArrayList. Elementer i matrisen er bare tilgang til av indekser, og forsøk på å få tilgang til indekser utenfor matrisen vil vanligvis ikke føre til problemer med hukommelseskorrupsjon. Java Vector-klassen tilsvarer omtrent C ++ -vektorklassen, og er ikke synkronisert for å aktivere tilgang med flere tråder. ArrayList og CopyOnWriteArrayList er derimot begge trådsikre. Av de tre er CopyOnWriteArrayList den mest arbeidskrevende klassen, fordi den gjenskaper den dynamiske matrisen fullstendig hver gang en ny verdi skrives til matrisen.
Dynamiske matriser implementeres på i det vesentlige på samme måte uansett hvilket dataspråk det er snakk om, men avhengig av et bestemt språk kan det være andre muligheter som er bygget oppå det. I likhet med statiske arrays, begrenser ikke dynamiske matriser typen objekt som kan lagres inni dem, så lenge de alle er av samme type objekt. En programmerer trenger aldri tilgang til et dynamisk utvalg direkte; det kan alltid gjøres gjennom en klasse som pakker inn matrisen for enkel bruk. Riktig bruk av disse matriser kan hjelpe en programmerer med dataorganisasjon i koden, og også med å lage forståelig kode som egner seg til enkelt vedlikehold.