Η C++ προσφέρει διαφορετικούς περιέκτες για να αποθηκεύεις στοιχεία του ίδιου τύπου με συγκεκριμένη σειρά.
Υπάρχει το std::array για περιέκτες σταθερού μεγέθους και το std::vector, το οποίο προσφέρει δυνατότητα δυναμικής αλλαγής μεγέθους.
Όταν δηλώνεις έναν πίνακα ή ένα διάνυσμα, πρέπει να προσδιορίσεις τον τύπο των στοιχείων που θα περιέχει ο περιέκτης. Οι πίνακες χρειάζονται επίσης ένα μέγεθος. Κοίτα αυτά τα παραδείγματα για να δεις την αρχικοποίηση των δύο τύπων περιεκτών:
#include <array>
#include <string>
// std::array<element_type, size> variable_name {list of elements}
std::array<std::string, 3> indie_rock {"yeah", "yeah", "yeah"};
// indie_rock contains the elements "yeah" three times
Τα διανύσματα συνήθως χρειάζονται περισσότερο χώρο, καθώς δεσμεύουν μνήμη για περαιτέρω ανάπτυξη. Δεν χρειάζεται να προσδιορίσεις μέγεθος:
#include <vector>
// std::vector<element_type> variable_name {list of elements}
std::vector<int> countdown {3, 2, 1};
// my_vector contains the elements 3, 2 and 1
Σημείωση: Δεν χρειάζεται να γνωρίζεις ακόμη την ακριβή μηχανική πίσω από την έννοια του template, θα έχει τη δική της έννοια πιο κάτω στο δέντρο του προγράμματος σπουδών.
Τα διανύσματα και οι πίνακες μοιράζονται τις ίδιες συναρτήσεις για την πρόσβαση στα στοιχεία τους.
Μπορείς να χρησιμοποιήσεις τις συναρτήσεις-μέλη front και back για να πάρεις το πρώτο και το τελευταίο στοιχείο του περιέκτη.
Υπάρχουν επίσης η at και ο τελεστής [] για να έχεις πρόσβαση σε συγκεκριμένα στοιχεία.
countdown[0];
// => 3
countdown.at(2);
// => 1
countdown[1] = 4;
// countdown now contains 3, 4 and 1
indie_rock.back() = "yeahs";
// indie_rock is now "yeah", "yeah", "yeahs"
Σημείωση: Αν διαλέξεις μια θέση που δεν βρίσκεται στο εύρος του περιέκτη σου, το
[]μπορεί να οδηγήσει σε απροσδιόριστη συμπεριφορά. Η συνάρτησηatθα πετάξει μια εξαίρεση, που μακροπρόθεσμα μπορεί να σου κάνει τη ζωή πιο εύκολη.
Καθώς το vector δεν έχει σταθερό μέγεθος, μπορείς να προσθέτεις ή να αφαιρείς στοιχεία.
Δύο συνηθισμένες συναρτήσεις για αυτόν τον σκοπό είναι οι emplace_back και pop_back.
std::vector<std::string> witches {"Holly", "Alyssa", "Shannen"};
witches.pop_back();
// Shannen is no longer with the witches
witches.emplace_back("Rose");
// Rose has joined the team
Μπορείς να ελέγξεις αν οι περιέκτες είναι άδειοι με τη συνάρτηση-μέλος empty.
Αν θέλεις να μάθεις τον αριθμό των στοιχείων, μπορείς να χρησιμοποιήσεις τη size.