| Both sides previous revision
Previous revision
Next revision
|
Previous revision
Next revision
Both sides next revision
|
cpp:stl:containers_commons [2022/06/01 04:17] gthanos [Προσδιορισμός του εύρους των στοιχείων ενός Container μέσω iterator] |
cpp:stl:containers_commons [2022/06/01 05:49] gthanos |
| ===== Κοινά χαρακτηριστικά για όλους τους Containers ===== | ===== Συμπληρωματικοί τρόποι πρόσβασης των στοιχείων των STL Containers ===== |
| | |
| ===== Εισαγωγή των στοιχείων μέσα σε ένα Container ===== | |
| |
| Η εισαγωγή στοιχείων σε οποιονδήποτε //container// γίνεται δημιουργώντας ένα αντίγραφο του αντικειμένου προς εισαγωγή και αποθήκευση του νέου αντικείμενου στον //container//. Οι τρόποι με τους οποίους δημιουργείται το αντίγραφο περιγράφονται παρακάτω. | Η εισαγωγή στοιχείων σε οποιονδήποτε //container// γίνεται δημιουργώντας ένα αντίγραφο του αντικειμένου προς εισαγωγή και αποθήκευση του νέου αντικείμενου στον //container//. Οι τρόποι με τους οποίους δημιουργείται το αντίγραφο περιγράφονται παρακάτω. |
| std::list<Student> mylist; | std::list<Student> mylist; |
| for(int i=0; i<4; i++) { | for(int i=0; i<4; i++) { |
| mylist.push_back(students[i]); | mylist.insert(mylist.end(),students[i]); // equivalent with push_back |
| //mylist.insert(mylist.end(),students[i]); // equivalent with push_back | |
| //mylist.emplace_back(students[i].getName(), students[i].getAEM()); | |
| //mylist.emplace(mylist.end(), students[i].getName(), students[i].getAEM()); // equivalent with emplace_back | //mylist.emplace(mylist.end(), students[i].getName(), students[i].getAEM()); // equivalent with emplace_back |
| } | } |
| Η συνάρτηση [[http://www.cplusplus.com/reference/list/list/assign/|assign]] δημιουργεί ένα αντίγραφο των περιεχομένων ξεκινώντας από το πρώτο όρισμα (συμπεριλαμβανομένου) έως και το δεύτερο όρισμα (μη συμπεριλαμβανομένου). Στο παραπάνω παράδειγμα ξεκινά από τη θέση **1** του πίνακα (**myarray.cbegin()+1**) έως και τη θέση **3** (**myarray.cbegin()+3**). Η θέση **myarray.cbegin()+4** που είναι το 2ο όρισμα δεν περιλαμβάνεται στο διάστημα. | Η συνάρτηση [[http://www.cplusplus.com/reference/list/list/assign/|assign]] δημιουργεί ένα αντίγραφο των περιεχομένων ξεκινώντας από το πρώτο όρισμα (συμπεριλαμβανομένου) έως και το δεύτερο όρισμα (μη συμπεριλαμβανομένου). Στο παραπάνω παράδειγμα ξεκινά από τη θέση **1** του πίνακα (**myarray.cbegin()+1**) έως και τη θέση **3** (**myarray.cbegin()+3**). Η θέση **myarray.cbegin()+4** που είναι το 2ο όρισμα δεν περιλαμβάνεται στο διάστημα. |
| |
| Η συνάρτηση [[http://www.cplusplus.com/reference/list/list/assign/|assign]] είναι διαθέσιμη μόνο για sequence_containers και όχι για associative ή unordered_associative containers (//set,map,unordered_set,unordered_map//). | Η συνάρτηση [[http://www.cplusplus.com/reference/list/list/assign/|assign]] είναι διαθέσιμη μόνο για sequence_containers και όχι για associative ή unordered_associative containers (όπως //set,map,unordered_set,unordered_map//). |
| </WRAP> | </WRAP> |
| |
| Όπως θα δούμε στη συνέχεια, οι //iterators// της //STL// διατρέχουν οποιαδήποτε δομή από τη θέση //begin()// (δείκτης στην πρώτη θέση περιεχομένων του //container//) έως //end()// (δείκτης αμέσως μετά την τελευταία θέση περιεχομένων του //container//). | Όπως θα δούμε στη συνέχεια, οι //iterators// της //STL// διατρέχουν οποιαδήποτε δομή από τη θέση //begin()// (δείκτης στην πρώτη θέση περιεχομένων του //container//) έως //end()// (δείκτης αμέσως μετά την τελευταία θέση περιεχομένων του //container//). |
| |