Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
cpp:stl:containers [2020/05/28 15:17] – [Εισαγωγή στοιχείου σε container] gthanos | cpp:stl:containers [2020/05/28 15:31] – gthanos |
---|
====== Κοινές συναρτήσεις για όλους τους containers ====== | ====== Κοινές συναρτήσεις για όλους τους containers ====== |
| |
==== Εισαγωγή στοιχείου σε container ==== | ==== Εισαγωγή στοιχείου ==== |
| |
Με εξαίρεση την κλάση [[array|std::array]] που το μέγεθος των πινάκων που δημιουργεί είναι σταθερό και δηλώνεται κατά τη δήλωση του πίνακα, οι υπόλοιποι //containers// μπορούν να μεταβάλλουν το αριθμό των στοιχείων που αποθηκεύουν. Για την εισαγωγή ενός στοιχείου σε έναν //container// υπάρχουν οι συναρτήσεις //insert// για την εισαγωγή ενός αντιγράφου του στοιχείου στον container και //emplace// για την δημιουργία ενός αντικειμένου και εισαγωγή του στον //container//. Επιπλέον, μόνο για τους //sequence containers// η //insert// λαμβάνει ως πρώτο όρισμα έναν //iterator// που δηλώνει τη θέση εισαγωγής του στοιχείου στον container. | Με εξαίρεση την κλάση [[array|std::array]] που το μέγεθος των πινάκων που δημιουργεί είναι σταθερό και δηλώνεται κατά τη δήλωση του πίνακα, οι υπόλοιποι //containers// μπορούν να μεταβάλλουν το αριθμό των στοιχείων που αποθηκεύουν. Για την εισαγωγή ενός στοιχείου σε έναν //container// υπάρχουν οι συναρτήσεις //insert// για την εισαγωγή ενός αντιγράφου του στοιχείου στον container και //emplace// για την δημιουργία ενός αντικειμένου και εισαγωγή του στον //container//. Επιπλέον, μόνο για τους //sequence containers// η //insert// λαμβάνει ως πρώτο όρισμα έναν //iterator// που δηλώνει τη θέση εισαγωγής του στοιχείου στον container. |
| |
Παραδείγματα: | Παραδείγματα: |
| === A. Ένθεση σε λίστα === |
| |
<code cpp student_list_insert.cpp> | <code cpp student_list_insert.cpp> |
} | } |
</code> | </code> |
| |
| === Β. Ένθεση σε set === |
| |
| <code cpp string_set_insert.cpp> |
| #include <iostream> // std::cout |
| #include <algorithm> // std::copy |
| #include <set> // std::set |
| #include <string> |
| |
| int main () { |
| std::string strings[] = { std::string("gamma"), std::string("beta"), std::string("delta") }; |
| |
| std::cerr << "----- Init set -----" << std::endl; |
| std::set<std::string> myset; |
| for(int i=0; i<3; i++) |
| myset.insert(strings[i]); |
| |
| myset.emplace("alpha"); // argument construct, insert last |
| |
| std::cerr << "-------------------------\n"; |
| std::cerr << "myset contains:"; |
| for (std::set<std::string>::iterator it = myset.begin(); it!=myset.end(); it++) |
| std::cerr << ' ' << *it; |
| std::cerr << std::endl; |
| std::cerr << "-------------------------\n"; |
| |
| return 0; |
| } |
| </code> |
| |
| ==== Διαγραφή στοιχείου ==== |
| |
| Η διαγραφή στοιχείου είναι ανάλογη της εισαγωγής και γίνεται μέσω της συνάρτησης //erase//. H συνάρτηση επιστρέφει έναν //iterator// στο επόμενο στοιχείο από αυτό που διεγράφει. Για τους //sequence containers// σε αναλογία με την διαδικασία εισαγωγής, η συνάρτηση λαμβάνει ως όρισμα έναν //iterator// που δηλώνει τη θέση διαγραφής από τον container. Για τους //associative containers// η διαγραφή γίνεται παρέχοντας ως όρισμα την τιμή του κλειδιού που επιθυμούμε να διγράψουμε. |
| |