Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> C /C + + Προγραμματισμός

Πώς να αφαιρέσει ένα δείκτη σε ένα δυναμικό Array των ακεραίων Χρησιμοποιώντας C + +

Δυναμικά πίνακες εκχώρησης είναι ένας χώρος - αποτελεσματικό μέσο για την αποθήκευση μεταβλητών ποσοτήτων δεδομένων σε C ​​+ + . Έχουν οργανωθεί αποτελεσματικά και να προσφέρουν οφέλη στην ταχύτητα και τον συνολικό αποτύπωμα της μνήμης που καταναλώνεται από τη δομή των δεδομένων . Η διαδικασία διαγραφής ενός δείκτη από μια δυναμική σειρά είναι αρκετά απλή , αλλά ένα από τα αρνητικά των δυναμικών πινάκων είναι ότι η ταχύτητα των αλγορίθμων που χρησιμοποιούνται για να προσθέσετε ή να αφαιρέσετε στοιχεία από τη σειρά είναι αργή σε σύγκριση με άλλες μεθόδους αποθήκευσης δεδομένων ( όπως συνδεδεμένες λίστες , στα οποία η προσθήκη και τη διαγραφή από τη συστοιχία μπορεί να γίνει σε σταθερό χρόνο ) . Το πιο βασικό αλγόριθμο για την αφαίρεση ενός δείκτη από μια δυναμική σειρά τρέχει σε γραμμικό χρόνο και είναι αρκετά εύκολο να καταλάβει . Τα πράγματα που θα χρειαστείτε
επεξεργαστή κειμένου
Compiler
Η Εμφάνιση Περισσότερες οδηγίες
Η 1

Καθορίστε το τελικό μέγεθος των τροποποιημένων σειρά σας . Αφαίρεση ενός ενιαίου δείκτη θα μειώσει το μέγεθος του πίνακα που προκύπτει από 1 :

int newSize = currentArraySize - 1 ? 2

Δημιουργήστε μια νέα δυναμική σειρά που μπορεί να κρατήσει όλα τα υπόλοιπα ακεραίων η παλιά διάταξη . Χρησιμοποιήστε αυτό το νέο μέγεθος για να το κάνετε αυτό :

int * newArray = new int [ newSize ] ?
Εικόνων 3

Δημιουργία μετρητές για τους δείκτες στις δύο νέες και παλιές σειρές . Αυτά θα αυξάνεται ξεχωριστά , όπως μπορείτε να αντιγράψετε τα περιεχόμενα του παλιού πίνακα στο νέο :

int oldArrayIndex = 0 ?

Int newArrayIndex = 0 ?
Η 4

Τράβερς δύο πίνακες:

για ( oldArrayIndex = 0 ? oldArrayIndex

{

//κώδικα για να αντιγράψετε πηγαίνει εδώ

}
5

Αντιγράψτε τα δεδομένα από την παλιά σειρά στο νέο , να αυξάνει το μετρητή του νέου πίνακα με μετρητή του παλαιού πίνακα μέχρι να φτάσετε το δείκτη να διαγράψετε . Όταν φτάσετε το δείκτη να διαγράψετε , μην αντιγράψετε τα δεδομένα και να μην αυξήσετε το νέο μετρητή πίνακα. Χρησιμοποιώντας το for loop από πάνω :

για ( oldArrayIndex = 0 ? OldArrayIndex

{

if ( ! OldArrayIndex = indexToDelete )

{

newArray [ newArrayIndex ] = oldArray [ oldArrayIndex ] ?

+ + newArrayIndex ?

} }




εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα