This is an old revision of the document!
Πρόκειται για μία δομή πίνακα του οποίου το μέγεθος ορίζεται κατά την μεταγλώττιση (δηλαδή κατά τη δήλωση του πίνακα) και παραμένει αμετάβλητο. Μπορείτε να διατρέξετε το πίνακα χρησιμοποιώντας iterators ή την κλασική μορφή του for που γνωρίζεται από τη γλώσσα C.
#include <iostream> #include <array> using namespace std; int main () { std::array<int,6> myarray = {10, 20, 30, 40, 50, 60} ; std::cout << "myarray fw:"; for (auto it=myarray.cbegin() ; it < myarray.cend(); ++it ) std::cout << ' ' << *it; // cannot modify *it std::cout << '\n'; cout << "myarray bw:"; for (auto rit=myarray.crbegin() ; rit < myarray.crend(); ++rit ) std::cout << ' ' << *rit; // cannot modify *rit std::cout << '\n'; std::cout << "myarray +10 fw:"; for (auto it=myarray.cbegin() ; it < myarray.cend(); ++it ) { *it += 10; std::cout << ' ' << *it; // cannot modify *it } std::cout << '\n'; cout << "myarray +100 bw:"; for (auto rit=myarray.rbegin() ; rit < myarray.rend(); ++rit ){ *it += 100; std::cout << ' ' << *rit; // cannot modify *rit } std::cout << '\n'; }
#include <iostream> #include <array> using namespace std; int main () { std::array<int,6> myarray = {10, 20, 30, 40, 50, 60} ; for(int i=0; i<myarray.size(); i++) std::cout << ' ' << myarray[i]; std::cout << endl; }
#include <iostream> #include <array> using namespace std; int main () { array<int,6> myarray = {10, 20, 30, 40, 50, 60}; myarray[5] = 600; cout << "myarray[5]:" << myarray[5] << endl; myarray[6] = 1; cout << "myarray[6]:" << myarray[6] << endl; }
Παρατηρούμε ότι στον παραπάνω κώδικα η πρόσβαση εκτός ορίων παράγει τερματισμό του προγράμματος μέσω segmentation fault. Εάν θέλουμε να μπορούμε να ελέγχουμε τις πιθανές λανθασμένες προσπελάσεις μέσω της διαχείρισης ενός exception υπάρχει η ισοδύναμη συνάρτηση at η οποία σε περιπτώσεις πρόσβασης εκτός ορίων πετάει exception του τύπου std::out_of_range, το οποίο στη συνέχεια καλούμαστε να διαχειριστούμε.
#include <iostream> #include <array> using namespace std; int main () { array<int,6> myarray = {10, 20, 30, 40, 50, 60}; myarray[5] = 600; cout << "myarray[5]:" << myarray[5] << endl; try { myarray.at(10) = 1; cout << "myarray[10]:" << myarray[10] << endl; } catch(std::out_of_range& ex) { cout << ex.what() << endl; } }