User Tools

Site Tools


cpp:stl:container_common_functions

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
cpp:stl:container_common_functions [2023/05/29 16:03] – [Β. Ένθεση σε set, unordered set] gthanoscpp:stl:container_common_functions [2023/05/30 19:18] (current) – [Αναζήτηση σε associative container και unordered associative container] gthanos
Line 1: Line 1:
-====== Κοινές συναρτήσεις για όλους τους containers ======+====== Κοινές συναρτήσεις για περισσότερους του ενός containers ======
  
 ===== Εισαγωγή στοιχείου ===== ===== Εισαγωγή στοιχείου =====
  
-Με εξαίρεση την κλάση [[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// (υπάρχουν περιπτώσεις που λαμβάνει, αλλά αυτό είναι ενδεικτικό και συνιστάται να αποφεύγετε τη χρήση του).
  
 Παραδείγματα: Παραδείγματα:
Line 39: Line 39:
  
 </code> </code>
 +
 +<WRAP tip 80% center round>
 +Η διαφορά ανάμεσα στις μεθόδους //insert// και //emplace// είναι η εξής: 
 +  * Στη μέθοδο //insert// παρέχουμε ένα αντικείμενο και η μέθοδος κατασκευάζει ένα αντίγραφο του μέσω του κατασκευαστή αντιγραφέα (copy-constructor) της κλάσης //Student//.
 +  * Στη μέθοδο //empace// παρέχουμε τα ορίσματα μέσω των οποίων κατασκευάζεται ένα αντικείμενο τύπου Student, μέσω του κατασκευαστή ''Student(const char *name, int aem);''.
 +</WRAP>
  
 ==== Β. Ένθεση σε set, unordered set ==== ==== Β. Ένθεση σε set, unordered set ====
Line 115: Line 121:
  
   return 0;   return 0;
 +}
 </code> </code>
  
Line 258: Line 265:
   std::unordered_set<std::string> myset;   std::unordered_set<std::string> myset;
   std::unordered_set<std::string>::iterator it;   std::unordered_set<std::string>::iterator it;
-  char* word[] = { "sugar", "choco", "milk", "banana", "coffee" };+  std::string word[] = { "sugar", "choco", "milk", "banana", "coffee" };
  
   // unordered_set some initial values:   // unordered_set some initial values:
Line 269: Line 276:
   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);
Line 306: Line 313:
  
 int main () { int main () {
-  vector<int> v;+  vector<int>= {1,2,3};
   array<int,6> a = {10, 20, 30, 40, 50, 60};   array<int,6> a = {10, 20, 30, 40, 50, 60};
      
Line 320: Line 327:
  
 <WRAP tip 80% center round> <WRAP tip 80% center round>
-H συνάρτηση //assign// διαγράφει τα υφιστάμενα περιεχόμενα του //container// πριν ανάθεση των νέων περιεχομένων. Προσαρμόζει το μέγεθος του //container// ανάλογα με τον αριθμό των στοιχείων που θα εισάγει σε αυτόν.+H συνάρτηση //assign// διαγράφει τα υφιστάμενα περιεχόμενα του //container// πριν ανάθεση των νέων περιεχομένων. Επιπλέον, προσαρμόζει το μέγεθος του //container// ανάλογα με τον αριθμό των στοιχείων που θα εισάγει σε αυτόν.
 </WRAP> </WRAP>
cpp/stl/container_common_functions.1685376202.txt.gz · Last modified: 2023/05/29 16:03 by gthanos