Vad är en dynamisk matris?
En dynamisk matris är en datastruktur som används i datorprogrammering som innehåller flera datorobjekt som en enda grupp och kan ändras vid behov för att rymma olika antal objekt. Gruppen hålls i ett enda sammanhängande block av minne, så tillgången till element är effektiv och snabb. Dynamiska matriser kallas också vektorer eller listor, beroende på datorspråket som de används i. Trots dessa namn kan någon särskild lista eller vektor inte vara en dynamisk grupp eftersom listor och vektorer kan implementeras annorlunda från matriser och från varandra.
C ++ innehåller en enda dynamisk matrisklass som kallas vektor, som finns i en grupp klasser som kallas standardmallbiblioteket. Det array som stöder denna klass kan nås av iteratorer eller av index. Dess förmåga att ändra storlek på efterfrågan är en stor fördel, men det kan locka programmerare till en falsk känsla av säkerhet eftersom den inte är så robust som den verkar vara. Den dynamiska matrisen som stödjer en vektor kan inte säkerställa att åtkomstbegäranden är giltiga. Liksom statiska matriser kan dynamiska matriser ha gränskontroll och problem med minneskorruption om ett program försöker få åtkomst till minne som inte har tilldelats dem.
Java innehåller tre distinkta dynamiska matrisklasser: Vector, ArrayList och CopyOnWriteArrayList. Element i matrisen har endast åtkomst av index, och försök att komma åt index utanför matrisen orsakar vanligtvis inte problem med minneskorruption. Java Vector-klassen motsvarar ungefär C ++ vektorklassen och är inte synkroniserad för att möjliggöra åtkomst av flera trådar. ArrayList och CopyOnWriteArrayList är däremot båda trådsäkra. Av de tre är CopyOnWriteArrayList den mest arbetskrävande klassen, eftersom den återställer den dynamiska matrisen helt varje gång ett nytt värde skrivs till arrayen.
Dynamiska matriser implementeras på väsentligen samma sätt oavsett datorspråk som är inblandade, men beroende på ett visst språk kan det finnas andra kapaciteter byggda ovanpå det. Liksom statiska matriser begränsar dynamiska matriser inte typen av objekt som kan lagras inuti dem, så länge de alla är samma typ av objekt. En programmerare behöver aldrig komma åt en dynamisk matris direkt; det kan alltid göras genom en klass som slår in matrisen för enkel användning. Korrekt användning av dessa matriser kan hjälpa en programmerare med datainorganisering inuti kod, och även med att skapa förståelig kod som lämpar sig för enkelt underhåll.