Εισαγωγή (insert) και διαγραφή (erase) στοιχείων διανύσματος στη C++

Αν και συνήθως τα νέα στοιχεία ενός διανύσματος προστίθενται στο τέλος (push_back()) υπάρχει η δυνατότητα προσθήκης νέων στοιχείων σε οποιαδήποτε θέση με τη συνάρτηση insert(). Επίσης, υπάρχει η δυνατότητα διαγραφής στοιχείων με τη συνάρτηση erase().

Δείτε ένα απλό παράδειγμα που ακολουθεί και κάντε διάφορες παραλλαγές, για να καταλάβετε σε βάθος τι συμβαίνει.

Προσέξτε πως χρησιμοποιείται ο επαναλήπτης (iterator) ο οποίος είναι δείκτης.

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    unsigned int i;
    vector<char> v;

    // itinialize 
    for (i=0; i < 5; ++i)
    {
        v.push_back('a' + i);
    }
    
    for (i=0; i < v.size(); ++i)
    {
        cout << v[i] << " ";
    }
    cout << endl << endl;

    vector<char>::iterator p = v.begin() + 2;
    
    // insert
    v.insert(p, 3, 'X');
    for (i=0; i < v.size(); ++i)
    {
        cout << v[i] << " ";
    }
    cout << endl << endl;

    // erase
    v.erase(p, p+2);
    for (i=0; i < v.size(); ++i)
    {
        cout << v[i] << " ";
    }
    cout << endl << endl;

    v.erase(p, v.end());
    for (i=0; i < v.size(); ++i)
    {
        cout << v[i] << " ";
    }
    cout << endl << endl;
    
    return 0;
}

Η ροή του προγράμματος έχει ως εξής:

  1. Κατασκευάζεται ένα διάνυσμα χαρακτήρων με 5 στοιχεία: a,b,c,d,e
  2. Δημιουργείται ο δείκτης p που δείχνει στην τρίτη θέση του διανύσματος
  3. Γίνεται εισαγωγή 3 χαρακτήρων X πριν από τη θέση p
  4. Διαγράφονται δύο στοιχεία στη θέση p
  5. Διαγράφονται τα στοιχεία από τη θέση p ως το τέλος του διανύσματος

Μεταγλώττιση και δοκιμαστική εκτέλεση:

astavrak@apollonia:~$ g++ program.cpp
astavrak@apollonia:~$ ./a.out 
a b c d e 

a b X X X c d e 

a b X c d e 

a b 

Άσκηση: να βρεθεί το διάστημα εμπιστοσύνης του μέσου από τα δεδομένα USA GDP

Συνδεθείτε για περισσότερες δυνατότητες αλληλεπίδρασης,
σχολιασμοί, εξωτερικοί σύνδεσμοι, βοήθεια, ψηφοφορίες, αρχεία, κτλ.

Creative Commons License
Εκπαιδευτικό υλικό από τον Αθανάσιο Σταυρακούδη σας παρέχετε κάτω από την άδεια Creative Commons Attribution-NonCommercial-ShareAlike 4.0 License.
Σας παρακαλώ να ενημερωθείτε για κάποιους επιπλέον περιορισμούς
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=401.