Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
cpp:stl:container_common_functions [2023/05/29 16:13] – [A. Ένθεση στους sequence_containers list, forward_list, vector και dequeue] gthanos | cpp:stl:container_common_functions [2023/05/29 16:43] – [Εισαγωγή στοιχείου] gthanos |
---|
===== Εισαγωγή στοιχείου ===== | ===== Εισαγωγή στοιχείου ===== |
| |
Με εξαίρεση την κλάση [[array|std::array]] που το μέγεθος των πινάκων που δημιουργεί είναι σταθερό και δηλώνεται κατά τη δήλωση του πίνακα, οι υπόλοιποι //containers// μπορούν να μεταβάλλουν το αριθμό των στοιχείων που αποθηκεύουν. Για την εισαγωγή ενός στοιχείου σε έναν //container// υπάρχουν οι συναρτήσεις //insert// για την εισαγωγή ενός αντιγράφου του στοιχείου στον container και //emplace// για την δημιουργία ενός αντικειμένου και εισαγωγή του στον //container//. Επιπλέον, μόνο για τους //sequence containers// η //insert// λαμβάνει ως πρώτο όρισμα έναν //iterator// που δηλώνει τη θέση εισαγωγής του στοιχείου στον container. Για τις υπόλοιπες κατηγορίες //containers//, η //insert// δεν λαμβάνει ως πρώτο όρισμα έναν //iterator// (εάν λαμβάνει, αυτό είναι ενδεικτικό και καλό είναι να αποφεύγετε η χρήση του). | Με εξαίρεση την κλάση [[array|std::array]] που το μέγεθος των πινάκων που δημιουργεί είναι σταθερό και δηλώνεται κατά τη δήλωση του πίνακα, οι υπόλοιποι //containers// μπορούν να μεταβάλλουν το αριθμό των στοιχείων που αποθηκεύουν. Για την εισαγωγή ενός στοιχείου σε έναν //container// υπάρχουν οι συναρτήσεις //insert// για την εισαγωγή ενός αντιγράφου του στοιχείου στον container και //emplace// για την δημιουργία ενός αντικειμένου και εισαγωγή του στον //container//. Επιπλέον, μόνο για τους //sequence containers// η //insert// λαμβάνει ως πρώτο όρισμα έναν //iterator// που δηλώνει τη θέση εισαγωγής του στοιχείου στον container. Για τις υπόλοιπες κατηγορίες //containers//, η //insert// δε λαμβάνει ως πρώτο όρισμα έναν //iterator// (υπάρχουν περιπτώσεις που λαμβάνει, αλλά αυτό είναι ενδεικτικό και συνιστάται να αποφεύγετε τη χρήση του). |
| |
| <WRAP tip 80% center round> |
| Έχετε υπόψη σας ότι οποιοδήποτε αντικείμενο τοποθετήσετε μέσα σε ένα //container// θα δημιουργηθεί ένα αντίγραφο του συγκεκριμένου αντικειμένου μέσα στον //container//. Κατά συνέπεια, τα αντικείμενα που αποθηκεύονται είναι αντίγραφα των αντικειμένων που παρέχονται ως ορίσματα στις συνάρτηση εισαγωγής //insert// του //container//. |
| </WRAP> |
| |
Παραδείγματα: | Παραδείγματα: |
if(it != myset.end()) { | if(it != myset.end()) { |
myset.erase (it); | myset.erase (it); |
std::cout << "'buiscuits' erased\n"; | std::cout << "'biscuits' erased\n"; |
} | } |
else | else |
std::cout << "'buiscuits' not found\n"; | std::cout << "'biscuits' not found\n"; |
| |
print_set(myset); | print_set(myset); |
| |
int main () { | int main () { |
vector<int> v; | vector<int> v = {1,2,3}; |
array<int,6> a = {10, 20, 30, 40, 50, 60}; | array<int,6> a = {10, 20, 30, 40, 50, 60}; |
| |
| |
<WRAP tip 80% center round> | <WRAP tip 80% center round> |
H συνάρτηση //assign// διαγράφει τα υφιστάμενα περιεχόμενα του //container// πριν ανάθεση των νέων περιεχομένων. Προσαρμόζει το μέγεθος του //container// ανάλογα με τον αριθμό των στοιχείων που θα εισάγει σε αυτόν. | H συνάρτηση //assign// διαγράφει τα υφιστάμενα περιεχόμενα του //container// πριν ανάθεση των νέων περιεχομένων. Επιπλέον, προσαρμόζει το μέγεθος του //container// ανάλογα με τον αριθμό των στοιχείων που θα εισάγει σε αυτόν. |
</WRAP> | </WRAP> |