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

Σειρά C-Διάνυσμα (1)

2024-07-12

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

🌈个人主页:Συμμαθητής Γιουσέν 

💫个人格言:“成为自己未来的主人~”   

Εισαγωγή και χρήση του Vector

Εισαγωγή στο Vector

Όταν ο τύπος παραμέτρου που κατασκευάζεται από το διάνυσμα είναι ο τύπος char, είναι πολύ παρόμοιος με τη συμβολοσειρά, αλλά υπάρχουν επίσης διαφορές μεταξύ των δύο, για παράδειγμα, για το διάνυσμα.Μπορεί να λάβει υπόψη άλλους διαφορετικούς τύπους, ενώ η συμβολοσειρά μπορεί να είναι μόνο για χορδές, και αφού μάθουμε τη συμβολοσειρά λεπτομερώς, θα είναι πιο εύκολο για εμάς να μάθουμε άλλα πράγματα STL.

  1. Το διάνυσμα είναι ένα κοντέινερ ακολουθίας που αντιπροσωπεύει έναν πίνακα μεταβλητού μεγέθους.
  2. Ακριβώς όπως ένας πίνακας, το Vector χρησιμοποιεί επίσης συνεχή χώρο αποθήκευσης για την αποθήκευση στοιχείων, πράγμα που σημαίνει ότι τα στοιχεία του Vector είναι τόσο αποτελεσματικά όσο ένας πίνακας, αλλά σε αντίθεση με έναν πίνακα, το μέγεθός του μπορεί να αλλάξει δυναμικά Το μέγεθός του θα αντιμετωπιστεί αυτόματα από το δοχείο.
  3. Ουσιαστικά, το Vector χρησιμοποιεί έναν δυναμικά εκχωρημένο πίνακα για την αποθήκευση των στοιχείων του Όταν εισάγεται ένα νέο στοιχείο, ο αριθμός πρέπει να ανακατανεμηθεί για να αυξηθεί ο χώρος αποθήκευσης. Η προσέγγιση είναι να εκχωρηθεί ένας νέος πίνακας και στη συνέχεια να μετακινηθούν όλα τα στοιχεία σε αυτόν τον πίνακα Από την άποψη του χρόνου, αυτή είναι μια σχετικά δαπανηρή εργασία, επειδή κάθε φορά που προστίθεται ένα νέο στοιχείο στο κοντέινερ, το διάνυσμα δεν θα ανακατανεμηθεί. κάθε φορά.
  4. Στρατηγική κατανομής διανυσματικού χώρου: Το Vector θα εκχωρήσει λίγο επιπλέον χώρο για να φιλοξενήσει πιθανή ανάπτυξη, επειδή ο χώρος αποθήκευσης είναι μεγαλύτερος από τον πραγματικό χώρο αποθήκευσης που απαιτείται. λογαριθμικά αυξανόμενου μεγέθους διαστήματος, ώστε η εισαγωγή στοιχείου στο τέλος να γίνεται σε σταθερό χρόνο.
  5. Επομένως, το Vector καταλαμβάνει μεγαλύτερο αποθηκευτικό χώρο για να αποκτήσει τη δυνατότητα να διαχειρίζεται τον χώρο και να τον αναπτύσσει δυναμικά με αποτελεσματικό τρόπο.
  6. Σε σύγκριση με άλλα δοχεία δυναμικής ακολουθίας, το Vector είναι πιο αποτελεσματικό όταν η πρόσβαση σε στοιχεία στο τέλος είναι σχετικά αποτελεσματική, αλλά είναι λιγότερο αποτελεσματική για άλλες λειτουργίες διαγραφής και εισαγωγής που δεν βρίσκονται στο τέλος.

Χρήση του φορέα

λειτουργία push_back

  1. void test_vector1()
  2. {
  3. vector<double> v2;
  4. vector<int> v1;
  5. v1.push_back(1);
  6. v1.push_back(2);
  7. v1.push_back(3);
  8. v1.push_back(4);
  9. for (size_t i = 0; i < v1.size(); i++)
  10. {
  11. cout << v1[i] << " ";
  12. }
  13. cout << endl;
  14. }
  15. int main()
  16. {
  17. test_vector1();
  18. return 0;
  19. }

Στην πραγματικότητα, δεν υπάρχει τίποτα να πούμε για το push_back Θα προσθέσει χαρακτήρες μετά τον αρχικό χώρο αποθήκευσης του Vector.

Στην πραγματικότητα, υπάρχει μια λεπτομερής εισαγωγή στο αρχείο Όταν δεν υπάρχει αρκετός χώρος κατά την εισαγωγή, η χωρητικότητα θα επεκταθεί αυτόματα.

Όσον αφορά τις μεθόδους διέλευσης της συνάρτησης Vector, θα μιλήσουμε επίσης για διάφορες μεθόδους εδώ:

  1. for (size_t i = 0; i < v1.size(); i++)
  2. {
  3. cout << v1[i] << " ";
  4. }
  5. cout << endl;
  6. for (size_t i = 0; i < v1.size(); i++)
  7. {
  8. cout << v1[i] << " ";
  9. }
  10. cout << endl;
  11. vector<int>::iterator it1 = v1.begin();
  12. while (it1 != v1.end())
  13. {
  14. cout << *it1 << " ";
  15. it1++;
  16. }
  17. cout << endl;
  18. for (auto e : v1)
  19. {
  20. cout << e << " ";
  21. }
  22. cout << endl;

Συμπεριλαμβανομένης της πρόσβασης του δείκτη [], του επαναλήπτη και του εύρους για, αυτό είναι βασικά το ίδιο με τη συμβολοσειρά για την οποία μιλήσαμε πριν.

  1. void test_vector2()
  2. {
  3. vector<string> v2;
  4. string s1("张三");
  5. v2.push_back(s1);
  6. v2.push_back(string("李四"));
  7. v2.push_back("王五");
  8. v2[1] += "来";
  9. for (const auto& e : v2)
  10. {
  11. cout << e << " ";
  12. }
  13. cout << endl;
  14. }
  15. int main()
  16. {
  17. test_vector2();
  18. return 0;
  19. }

 

Αυτό που είναι ακόμα πιο εκπληκτικό για το Vector είναι ότι μπορεί να χρησιμοποιηθεί ξανά και να εφαρμόσει άλλα πράγματα στο Vector, όπως List, string ή ακόμα και άλλο Vector.

Εάν εφαρμόζεται συμβολοσειρά, τότε κάθε στοιχείο του πίνακα ακολουθιών αντιπροσωπεύει μια συμβολοσειρά.