cpp:stl:vector
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| cpp:stl:vector [2020/05/29 10:44] – [Διαγραφή των περιεχομένων του πίνακα] gthanos | cpp:stl:vector [2023/05/29 19:12] (current) – [Πρόσβαση στα στοιχεία του πίνακα] gthanos | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== std::vector ====== | ====== std::vector ====== | ||
| - | Πρόκειται για μία δομή πίνακα του οποίου η χωρητικότητα μεταβάλλεται δυναμικά με βάση τις ανάγκες αποθήκευσης του προγράμματος. Η παρακάτω εικόνα είναι ενδεικτική της υφιστάμενης δομής δεδομένω που περιγράφει ένα //vector//. Παρατηρήστε ότι η χωρητικότητα ενός vector μπορεί να είναι μεγαλύτερη από τον αριθμό των αποθηκευμένων στοιχείων του. | + | Πρόκειται για μία δομή πίνακα του οποίου η χωρητικότητα μεταβάλλεται δυναμικά με βάση τις ανάγκες αποθήκευσης του προγράμματος. Η παρακάτω εικόνα είναι ενδεικτική της υφιστάμενης δομής δεδομένων που περιγράφει ένα //vector//. Παρατηρήστε ότι η χωρητικότητα ενός |
| - | + | ||
| - | {{ : | + | |
| - | + | ||
| - | **Σημείωση: | + | |
| + | {{ : | ||
| ===== Επίδοσης της δομής ===== | ===== Επίδοσης της δομής ===== | ||
| Line 12: | Line 9: | ||
| * Η πράξη της ένθεσης ή της διαγραφής από το μέσο ή την αρχή του πίνακα συνεπάγεται την μετακίνηση όλων των στοιχείων που βρίσκονται δεξιότερα κατά μία θέση και η επίδοση της εξαρτάται από την θέση της ένθεσης ή της διαγραφής σε σχέση με το τέλος του πίνακα. Ο επιμερισμένος χρόνος της συγκεκριμένης πράξης είναι γραμμικός στο μέγεθος των αποθηκευμένων στοιχείων του πίνακα **(Ο(Ν))**. | * Η πράξη της ένθεσης ή της διαγραφής από το μέσο ή την αρχή του πίνακα συνεπάγεται την μετακίνηση όλων των στοιχείων που βρίσκονται δεξιότερα κατά μία θέση και η επίδοση της εξαρτάται από την θέση της ένθεσης ή της διαγραφής σε σχέση με το τέλος του πίνακα. Ο επιμερισμένος χρόνος της συγκεκριμένης πράξης είναι γραμμικός στο μέγεθος των αποθηκευμένων στοιχείων του πίνακα **(Ο(Ν))**. | ||
| * Η πράξη της αναζήτησης είναι γραμμική στο μέγεθος των στοιχείων του πίνακα **(Ο(Ν))**. | * Η πράξη της αναζήτησης είναι γραμμική στο μέγεθος των στοιχείων του πίνακα **(Ο(Ν))**. | ||
| + | * Η πρόσβαση στο i-στο στοιχείο του πίνακα έχει κόστος 1. | ||
| ===== Πρόσβαση στα στοιχεία του πίνακα ===== | ===== Πρόσβαση στα στοιχεία του πίνακα ===== | ||
| - | Για τη συνάρτηση //vector// ισχύει η πρόσβαση μέσω των συναρτήσεων [[http:// | + | Για τη συνάρτηση //vector// ισχύει η πρόσβαση μέσω των συναρτήσεων [[http:// |
| <code cpp vector_access.cpp> | <code cpp vector_access.cpp> | ||
| Line 24: | Line 22: | ||
| int main () { | int main () { | ||
| vector< | vector< | ||
| - | cout << "size: " << v.size() << endl; | + | cout << " |
| - | cout << "capa: " << v.capacity() << endl; | + | cout << "capacity: " << v.capacity() << endl; |
| try { | try { | ||
| Line 98: | Line 96: | ||
| </ | </ | ||
| - | Παρατηρήστε ότι κάθε φορά που γεμίζει ο πίνακας (δηλαδή size()==capacity()), | + | Παρατηρήστε ότι κάθε φορά που γεμίζει ο πίνακας (δηλαδή size()==capacity()) |
| ===== Διαγραφή των περιεχομένων του πίνακα ===== | ===== Διαγραφή των περιεχομένων του πίνακα ===== | ||
| Line 211: | Line 209: | ||
| Αποτελεί γενικότερο κανόνα της STL ότι παρέχει εξειδικευμένες συναρτήσεις για ένθεση και διαγραφή στην αρχή ή/και στο τέλος της δομής μόνο εάν η δομή υποστηρίζει τη γρήγορη ένθεση/ | Αποτελεί γενικότερο κανόνα της STL ότι παρέχει εξειδικευμένες συναρτήσεις για ένθεση και διαγραφή στην αρχή ή/και στο τέλος της δομής μόνο εάν η δομή υποστηρίζει τη γρήγορη ένθεση/ | ||
| </ | </ | ||
| - | ===== Ανάθεση των περιεχομένων του vector από οποιοδήποτε άλλο container ===== | ||
| - | |||
| - | Η ανάθεση των περιεχομένων ενός //vector// μέσω της συνάρτησης // | ||
| - | |||
| - | <code cpp vector_assign.cpp> | ||
| - | #include < | ||
| - | #include < | ||
| - | #include < | ||
| - | #include < | ||
| - | using namespace std; | ||
| - | |||
| - | template< | ||
| - | void print(vector< | ||
| - | for(auto it = v.cbegin(); it!=v.cend(); | ||
| - | cout << setw(3) << *it; | ||
| - | cout << endl; | ||
| - | } | ||
| - | |||
| - | int main () { | ||
| - | vector< | ||
| - | array< | ||
| - | |||
| - | v.assign(a.begin(), | ||
| - | | ||
| - | print(v); | ||
| - | } | ||
| - | </ | ||
cpp/stl/vector.1590749077.txt.gz · Last modified: 2020/05/29 09:44 (external edit)
