cpp:stl:vector
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
cpp:stl:vector [2020/05/27 16:54] – [Διαγραφή των περιεχομένων του πίνακα] gthanos | cpp:stl:vector [2020/05/27 17:45] – gthanos | ||
---|---|---|---|
Line 11: | Line 11: | ||
* Η πράξη της αναζήτησης είναι γραμμική στο μέγεθος των στοιχείων του πίνακα **(Ο(Ν))**. | * Η πράξη της αναζήτησης είναι γραμμική στο μέγεθος των στοιχείων του πίνακα **(Ο(Ν))**. | ||
- | ==== Ένθεση στον πίνακα ==== | + | ===== Πρόσβαση στα στοιχεία του πίνακα ===== |
+ | |||
+ | Για τη συνάρτηση //vector// ισχύει η πρόσβαση μέσω των συναρτήσεων [[http:// | ||
+ | |||
+ | <code cpp vector_access.cpp> | ||
+ | #include < | ||
+ | #include < | ||
+ | using namespace std; | ||
+ | |||
+ | int main () { | ||
+ | vector< | ||
+ | cout << "size: " << v.size() << endl; | ||
+ | cout << "capa: " << v.capacity() << endl; | ||
+ | |||
+ | try { | ||
+ | v.at(3) = 600; | ||
+ | cout << " | ||
+ | v.at(4) = 1; | ||
+ | cout << " | ||
+ | } catch(std:: | ||
+ | cout << ex.what() << endl; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Ένθεση στον πίνακα | ||
Όπως προαναφέρθηκε, | Όπως προαναφέρθηκε, | ||
Line 73: | Line 98: | ||
Παρατηρήστε ότι κάθε φορά που χρειάζεται να γίνει μεγένθυση του πίνακα (re-allocation) η χωρητικότητα διπλασιάζεται. Το παραπάνω εξασφαλίζει οτι το επιμέρισμένο κόστος αντιγραφής για κάθε re-allocation είναι σταθερό Ο(1) (δες σχετικά την ανάλυση της επίδοσης του ανακατακερματισμού στο βιβλίο των Δομών Δεδομένων του κ. Μποζάνη). | Παρατηρήστε ότι κάθε φορά που χρειάζεται να γίνει μεγένθυση του πίνακα (re-allocation) η χωρητικότητα διπλασιάζεται. Το παραπάνω εξασφαλίζει οτι το επιμέρισμένο κόστος αντιγραφής για κάθε re-allocation είναι σταθερό Ο(1) (δες σχετικά την ανάλυση της επίδοσης του ανακατακερματισμού στο βιβλίο των Δομών Δεδομένων του κ. Μποζάνη). | ||
- | ==== Διαγραφή των περιεχομένων του πίνακα ==== | + | ===== Διαγραφή των περιεχομένων του πίνακα ===== |
+ | |||
+ | Η διαγραφή των περιεχομένων ενός της κλάσης //vector// μπορεί να γίνει μέσω της μεθόδου [[http:// | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | <WRAP important 80% center round> | ||
+ | Όταν μία συνάρτηση της STL λαμβάνει ως παραμέτρους δύο // | ||
+ | </ | ||
<code cpp vector_erase_01.cpp> | <code cpp vector_erase_01.cpp> | ||
Line 137: | Line 171: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | <code cpp vector_erase_03.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< | ||
+ | for(int i=0; i<10; i++) { | ||
+ | ints.push_back(i+1); | ||
+ | ints.insert(ints.begin(), | ||
+ | } | ||
+ | print(ints); | ||
+ | | ||
+ | while(ints.size() > 0) { | ||
+ | ints.erase(ints.begin(), | ||
+ | print(ints); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== Ανάθεση των περιεχομένων του 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.txt · Last modified: 2023/05/29 19:12 by gthanos