Skip to main content

Τι είναι ένας δυναμικός πίνακας;

Μια δυναμική συστοιχία είναι μια δομή δεδομένων που χρησιμοποιείται στον προγραμματισμό υπολογιστών που κατέχει πολλαπλά υπολογιστικά αντικείμενα ως ενιαία ομάδα και μπορεί να αλλάξει το μέγεθος κατά βούληση για να φιλοξενήσει ποικίλους αριθμούς αντικειμένων.Η ομάδα κρατιέται σε ένα μόνο συνεχόμενο μπλοκ μνήμης, οπότε η πρόσβαση σε στοιχεία είναι αποτελεσματική και γρήγορη.Οι δυναμικές συστοιχίες ονομάζονται επίσης φορείς ή λίστες, ανάλογα με τη γλώσσα του υπολογιστή στην οποία χρησιμοποιούνται.Παρά τα ονόματα αυτά, οποιαδήποτε συγκεκριμένη λίστα ή φορέας μπορεί να μην είναι ένας δυναμικός πίνακας, αφού οι λίστες και οι φορείς μπορούν να εφαρμοστούν διαφορετικά από τις συστοιχίες και ο ένας από τον άλλο. Το C ++ περιέχει μια μόνο δυναμική κλάση συστοιχίας που ονομάζεται Vector, η οποία βρίσκεται σε μια ομάδα τάξεωνπου ονομάζεται Βιβλιοθήκη τυπικής προτύπων.Ο πίνακας που υποστηρίζει αυτή την κλάση μπορεί να έχει πρόσβαση από iterators ή από ευρετήρια.Η ικανότητά του να αλλάζει το μέγεθος της ζήτησης είναι ένα μεγάλο πλεονέκτημα, αλλά μπορεί να προσελκύσει προγραμματιστές σε μια ψευδή αίσθηση ασφάλειας, επειδή δεν είναι τόσο ισχυρή όσο φαίνεται να είναι.Η δυναμική συστοιχία που υποστηρίζει ένα φορέα δεν μπορεί να εξασφαλίσει ότι τα αιτήματα πρόσβασης είναι έγκυρα.Όπως οι στατικές συστοιχίες, οι δυναμικές συστοιχίες μπορούν να έχουν προβλήματα ελέγχου και διαφθοράς μνήμης εάν ένα πρόγραμμα επιχειρεί να αποκτήσει πρόσβαση στη μνήμη που δεν έχει διατεθεί γι 'αυτούς.

java περιέχει τρεις ξεχωριστές κλάσεις δυναμικής συστοιχίας: διάνυσμα, ArrayList και CopyOnwritearRayList.Τα στοιχεία στον πίνακα έχουν πρόσβαση μόνο από δείκτες και η προσπάθεια πρόσβασης σε δείκτες εκτός του πίνακα συνήθως δεν θα προκαλέσει προβλήματα διαφθοράς μνήμης.Η κλάση Vector Java είναι περίπου ισοδύναμη με την κλάση Vector C ++ και δεν συγχρονίζεται για να επιτρέψει την πρόσβαση με πολλαπλά νήματα.Το ArrayList και το CopyOnwriteArrayList, αντίθετα, είναι και τα δύο ασφαλή.Από τα τρία, το copyonwritearraylist είναι η πιο έντονη κατηγορία, επειδή αναδημιουργεί πλήρως τη δυναμική συστοιχία κάθε φορά που γράφεται μια νέα τιμή στον πίνακα.Ανάλογα με μια συγκεκριμένη γλώσσα μπορεί να υπάρχουν και άλλες δυνατότητες που βασίζονται στην κορυφή της.Όπως οι στατικές συστοιχίες, οι δυναμικές συστοιχίες δεν περιορίζουν τον τύπο του αντικειμένου που μπορεί να αποθηκευτεί μέσα τους, εφόσον είναι όλα τα ίδια είδη αντικειμένου.Ένας προγραμματιστής δεν χρειάζεται ποτέ να έχει πρόσβαση σε έναν δυναμικό πίνακα απευθείας.Μπορεί πάντα να γίνει μέσω μιας τάξης που περιτυλίγει τον πίνακα για εύκολη χρήση.Η σωστή χρήση αυτών των συστοιχιών μπορεί να βοηθήσει έναν προγραμματιστή με την οργάνωση δεδομένων μέσα στον κώδικα και επίσης με τη δημιουργία κατανοητή κώδικα που προσφέρεται σε εύκολη συντήρηση.