User Tools

Site Tools


cpp:stl:containers

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
cpp:stl:containers [2020/05/28 15:31] gthanoscpp:stl:containers [2020/05/28 16:00] – [Διαγραφή στοιχείου] gthanos
Line 68: Line 68:
 ==== Διαγραφή στοιχείου ==== ==== Διαγραφή στοιχείου ====
  
-Η διαγραφή στοιχείου είναι ανάλογη της εισαγωγής και γίνεται μέσω της συνάρτησης //erase//. H συνάρτηση επιστρέφει έναν //iterator// στο επόμενο στοιχείο από αυτό που διεγράφει. Για τους //sequence containers// σε αναλογία με την διαδικασία εισαγωγής, η συνάρτηση λαμβάνει ως όρισμα έναν //iterator// που δηλώνει τη θέση διαγραφής από τον container. Για τους //associative containers// η διαγραφή γίνεται παρέχοντας ως όρισμα την τιμή του κλειδιού που επιθυμούμε να διγράψουμε.+Η διαγραφή στοιχείου είναι ανάλογη της εισαγωγής και γίνεται μέσω της συνάρτησης //erase//. H συνάρτηση επιστρέφει έναν //iterator// στο επόμενο στοιχείο από αυτό που έχει διεγραφεί. Για τους //sequence containers// σε αναλογία με την διαδικασία εισαγωγής, η συνάρτηση λαμβάνει ως όρισμα έναν //iterator// που δηλώνει τη θέση διαγραφής από τον container. Για τους //associative containers// η διαγραφή γίνεται παρέχοντας ως όρισμα τη θέση του κλειδιού (μέσω //iterator//) ή την τιμή του κλειδιού που επιθυμούμε να διαγράψουμε.
  
 +=== Διαγραφή από λίστα ===
 +
 +Το παρακάτω παράδειγμα είναι από τη σελίδα [[http://www.cplusplus.com/reference/list/list/erase/|http://cplusplus.com/list/erase]]
 +
 +<code cpp list_erase.cpp>
 +#include <iostream>
 +#include <list>
 +
 +int main () {
 +  std::list<int> mylist;
 +  std::list<int>::iterator it1, it2;
 +
 +  // insert values:
 +  for (int i=1; i<10; ++i) mylist.push_back(i*10);
 +
 +                              // 10 20 30 40 50 60 70 80 90
 +  it1 = it2 = mylist.begin(); // ^^
 +  advance (it2,6);            // ^                 ^
 +  ++it1;                      //    ^              ^
 +
 +  it1 = mylist.erase (it1);   // 10 30 40 50 60 70 80 90
 +                              //    ^           ^
 +
 +  it2 = mylist.erase (it2);   // 10 30 40 50 60 80 90
 +                              //    ^           ^
 +                              // 10 30 40 50 60 80 90
 +  ++it1;                      //              ^
 +  --it2;                      //           ^
 +
 +  it1=mylist.erase (it1,it2); // 10 30 60 80 90
 +                              //        ^
 +
 +  std::cout << "mylist contains:";
 +  for (it1=mylist.begin(); it1!=mylist.end(); ++it1)
 +    std::cout << ' ' << *it1;
 +  std::cout << '\n';
 +
 +  return 0;
 +</code>
 +
 +
 +=== Διαγραφή από set ===
 +
 +Το παρακάτω παράδειγμα είναι από τη σελίδα [[http://www.cplusplus.com/reference/list/set/erase/|http://cplusplus.com/set/erase]]
 +
 +<code cpp set_erase.cpp>
 +// erasing from set
 +#include <iostream>
 +#include <set>
 +
 +int main ()
 +{
 +  std::set<int> myset;
 +  std::set<int>::iterator it;
 +
 +  // insert some values:
 +  for (int i=1; i<10; i++) myset.insert(i*10);  // 10 20 30 40 50 60 70 80 90
 +
 +  it = myset.begin();
 +  ++it;                                         // "it" points now to 20
 +
 +  myset.erase (it);
 +
 +  myset.erase (40);
 +
 +  it = myset.find (60);
 +  myset.erase (it, myset.end());
 +
 +  std::cout << "myset contains:";
 +  for (it=myset.begin(); it!=myset.end(); ++it)
 +    std::cout << ' ' << *it;
 +  std::cout << '\n';
 +
 +  return 0;
 +}
 +</code>
cpp/stl/containers.txt · Last modified: 2022/05/26 16:49 by gthanos