Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
cpp:stl:containers [2020/05/29 08:37] – [Προσδιορισμός εύρους στοιχείων] gthanos | cpp:stl:containers [2020/05/29 08:42] – [Προσδιορισμός εύρους στοιχείων] gthanos |
---|
<code cpp int_copy.cpp> | <code cpp int_copy.cpp> |
#include <iostream> // std::cout | #include <iostream> // std::cout |
#include <algorithm> // std::copy | |
#include <list> // std::list | #include <list> // std::list |
#include <array> // std::array | #include <array> // std::array |
#include "Student.hpp" | |
#define SIZE 10 | #define SIZE 10 |
| |
for (std::array<int,SIZE>::iterator it = myarray.begin(); it!=myarray.end(); ++it) | for (std::array<int,SIZE>::iterator it = myarray.begin(); it!=myarray.end(); ++it) |
std::cerr << ' ' << *it; | std::cerr << ' ' << *it; |
std::cerr << std::endl; | std::cerr << std::endl; // myarray: 1 2 3 4 5 6 7 8 9 |
| |
std::list<int> mylist; | std::list<int> mylist; |
mylist.assign(myarray.cbegin(), myarray.cbegin() + 3); | mylist.assign(myarray.cbegin() + 1, myarray.cbegin() + 4); |
std::cerr << "mylist contains:"; | std::cerr << "mylist contains:"; |
for (std::list<int>::iterator it = mylist.begin(); it!=mylist.end(); ++it) | for (std::list<int>::iterator it = mylist.begin(); it!=mylist.end(); ++it) |
std::cerr << ' ' << *it; | std::cerr << ' ' << *it; |
std::cerr << std::endl; | std::cerr << std::endl; // mylist: 2 3 4 |
| |
return 0; | return 0; |
| |
<WRAP tip 80% center round> | <WRAP tip 80% center round> |
Η μέθοδος [[http://www.cplusplus.com/reference/list/list/assign/|assign]] δημιουργεί ένα αντίγραφο των περιεχομένων ξεκινώντας από το πρώτο όρισμα (συμπεριλαμβανομένου) έως και το δεύτερο όρισμα (μη συμπεριλαμβανομένου). Στο παραπάνω παράδειγμα ξεκινά από τη θέση 0 του πίνακα (myarray.cbegin()) έως και τη θέση 2 (myarray.cbegin()+2). Η θέση myarray.cbegin()+3 που είναι το 2ο όρισμα δεν περιλαμβάνεται στο διάστημα. | Η μέθοδος [[http://www.cplusplus.com/reference/list/list/assign/|assign]] δημιουργεί ένα αντίγραφο των περιεχομένων ξεκινώντας από το πρώτο όρισμα (συμπεριλαμβανομένου) έως και το δεύτερο όρισμα (μη συμπεριλαμβανομένου). Στο παραπάνω παράδειγμα ξεκινά από τη θέση 1 του πίνακα (myarray.cbegin()+1) έως και τη θέση 3 (myarray.cbegin()+3). Η θέση myarray.cbegin()+4 που είναι το 2ο όρισμα δεν περιλαμβάνεται στο διάστημα. |
</WRAP> | </WRAP> |
| |
Όπως θα δούμε και στη συνέχεια, οι //iterators// της //STL// διατρέχουν οποιαδήποτε δομή από τη θέση //begin()// (δείκτης στην πρώτη θέση περιεχομένων του //container//) έως //end()// (δείκτης αμέσως μετά την τελευταία θέση περιεχομένων του //container//). | Σε αναλογία μετα παραπάνω, όπως θα δούμε στη συνέχεια, οι //iterators// της //STL// διατρέχουν οποιαδήποτε δομή από τη θέση //begin()// (δείκτης στην πρώτη θέση περιεχομένων του //container//) έως //end()// (δείκτης αμέσως μετά την τελευταία θέση περιεχομένων του //container//). |
| |
| |