User Tools

Site Tools


cpp:stl:containers

Differences

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

Link to this comparison view

Next revision
Previous revision
Next revisionBoth sides next revision
cpp:stl:containers [2020/05/28 15:16] – created gthanoscpp:stl:containers [2020/05/28 15:31] gthanos
Line 1: Line 1:
 ====== Κοινές συναρτήσεις για όλους τους containers ====== ====== Κοινές συναρτήσεις για όλους τους containers ======
  
-==== Εισαγωγή στοιχείου σε container ====+==== Εισαγωγή στοιχείου ====
  
-Με εξαίρεση την κλάση [[array|std::array]] που το μέγεθος των πινάκων που δημιουργεί είναι σταθερό και δηλώνεται κατά τη δήλωση του πίνακα, οι υπόλοιποι //containers// μπορούν να μεταβάλλουν το αριθμό των στοιχείων που αποθηκεύουν. Για την εισαγωγή ενός στοιχείου σε έναν //container// υπάρχουν οι συναρτήσεις //insert// για την εισαγωγή ενός αντιγράφου του στοιχείου στον container και //emplace// για την δημιουργία ενός αντικειμένου και εισαγωγή του στον //container.  +Με εξαίρεση την κλάση [[array|std::array]] που το μέγεθος των πινάκων που δημιουργεί είναι σταθερό και δηλώνεται κατά τη δήλωση του πίνακα, οι υπόλοιποι //containers// μπορούν να μεταβάλλουν το αριθμό των στοιχείων που αποθηκεύουν. Για την εισαγωγή ενός στοιχείου σε έναν //container// υπάρχουν οι συναρτήσεις //insert// για την εισαγωγή ενός αντιγράφου του στοιχείου στον container και //emplace// για την δημιουργία ενός αντικειμένου και εισαγωγή του στον //container//. Επιπλέον, μόνο για τους //sequence containers// η //insert// λαμβάνει ως πρώτο όρισμα έναν //iterator// που δηλώνει τη θέση εισαγωγής του στοιχείου στον container.
- +
-Επιπλέον, μόνο για τους //sequence containers// η //insert// λαμβάνει ως πρώτο όρισμα έναν //iterator// που δηλώνει τη θέση εισαγωγής του στοιχείου στον container.+
  
 Παραδείγματα: Παραδείγματα:
 +=== A. Ένθεση σε λίστα ===
  
 <code cpp student_list_insert.cpp> <code cpp student_list_insert.cpp>
 #include <iostream>     // std::cout #include <iostream>     // std::cout
 #include <algorithm>    // std::copy #include <algorithm>    // std::copy
-#include <list>       // std::list+#include <list>         // std::list
 #include "Student.hpp" #include "Student.hpp"
  
Line 37: Line 36:
  
 </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// η διαγραφή γίνεται παρέχοντας ως όρισμα την τιμή του κλειδιού που επιθυμούμε να διγράψουμε.
  
cpp/stl/containers.txt · Last modified: 2022/05/26 16:49 by gthanos