Κοινή χρήση τεχνολογίας

[Falling with C] Λεπτομερής εξήγηση της χρήσης του διανύσματος

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Γεια σας~ συμμαθητές, αυτό το άρθρο θα εμβαθύνει στο διανυσματικό κοντέινερ στο C. Ως ένας από τους πιο συχνά χρησιμοποιούμενους δυναμικούς πίνακες στην Standard Template Library (STL), το vector παρέχει ευέλικτη αποθήκευση στοιχείων και αποτελεσματικές μεθόδους πρόσβασης. Θα ξεκινήσουμε με τις βασικές γνώσεις και σταδιακά θα μάθουμε τη δημιουργία, την προετοιμασία, τη διέλευση, τη διαχείριση χώρου, την προσθήκη, τη διαγραφή, τον έλεγχο και τις λειτουργίες τροποποίησης. Μέσω λεπτομερών παραδειγμάτων και αναλύσεων, ελπίζουμε να βοηθήσουμε τους αναγνώστες να κατανοήσουν πλήρως και να κατακτήσουν τις δεξιότητες και τις προφυλάξεις για τη χρήση του διανύσματος.

1: Εισαγωγή στο διάνυσμα

διάνυσμαέγγραφο

  1. Ένα διάνυσμα είναι ένα δοχείο ακολουθίας που αντιπροσωπεύει έναν πίνακα μεταβλητού μεγέθους.
  2. Ακριβώς όπως οι πίνακες, τα διανύσματα χρησιμοποιούν επίσης συνεχή χώρο αποθήκευσης για την αποθήκευση στοιχείων. Αυτό σημαίνει ότι μπορείτε να χρησιμοποιήσετε δείκτες για πρόσβαση στα στοιχεία του διανύσματος, το οποίο είναι τόσο αποτελεσματικό όσο ένας πίνακας. Αλλά σε αντίθεση με έναν πίνακα, το μέγεθός του μπορεί να αλλάξει δυναμικά και το μέγεθός του θα χειρίζεται αυτόματα το κοντέινερ.
  3. Ουσιαστικά, το vector χρησιμοποιεί έναν δυναμικά εκχωρημένο πίνακα για να αποθηκεύσει τα στοιχεία του. Όταν εισάγονται νέα στοιχεία, το μέγεθος του πίνακα πρέπει να αλλάξει για να αυξηθεί ο αποθηκευτικός χώρος. Αυτό γίνεται με την εκχώρηση ενός νέου πίνακα και στη συνέχεια τη μετακίνηση όλων των στοιχείων σε αυτόν τον πίνακα. Από την άποψη του χρόνου, αυτή είναι μια σχετικά δαπανηρή εργασία, επειδή το διάνυσμα δεν αλλάζει μέγεθος κάθε φορά που προστίθεται ένα νέο στοιχείο στο δοχείο.
  4. Στρατηγική διανυσματικής κατανομής χώρου: το διάνυσμα εκχωρεί λίγο επιπλέον χώρο για να φιλοξενήσει πιθανή ανάπτυξη, επειδή ο αποθηκευτικός χώρος είναι μεγαλύτερος από τον πραγματικό χώρο αποθήκευσης που απαιτείται. Διαφορετικές βιβλιοθήκες χρησιμοποιούν διαφορετικές στρατηγικές για να ανταλλάξουν τη χρήση του χώρου και την ανακατανομή. Αλλά σε κάθε περίπτωση, η ανακατανομή θα πρέπει να αυξάνεται λογαριθμικά σε μέγεθος διαστήματος, έτσι ώστε η εισαγωγή ενός στοιχείου στο τέλος να γίνεται σε σταθερό χρόνο.
  5. Επομένως, το vector καταλαμβάνει περισσότερο χώρο αποθήκευσης προκειμένου να αποκτήσει τη δυνατότητα διαχείρισης του χώρου αποθήκευσης και να αναπτυχθεί δυναμικά με αποτελεσματικό τρόπο.
  6. Σε σύγκριση με άλλα δοχεία δυναμικής ακολουθίας (deque, list και forward_list), το vector είναι πιο αποτελεσματικό κατά την πρόσβαση σε στοιχεία και η προσθήκη και η διαγραφή στοιχείων στο τέλος είναι σχετικά αποτελεσματική. Για άλλες λειτουργίες διαγραφής και εισαγωγής που δεν είναι στο τέλος, η απόδοση είναι ακόμη χαμηλότερη. Είναι καλύτερο να χρησιμοποιείτε ενοποιημένους επαναλήπτες και αναφορές παρά list και forward_list.


Υπάρχουν τρεις σφαίρες χρήσης του STL: να μπορούμε να το χρησιμοποιήσουμε, να το κατανοήσουμε και να το επεκτείνουμε. Θα το μάθουμε επίσης με αυτόν τον τρόπο.

2: Δημιουργία και αρχικοποίηση του διανύσματος

Χρειάζεται αρχείο κεφαλίδας#include