This is an old revision of the document!
Πρόκειται για μία δομή πίνακα του οποίου το μέγεθος ορίζεται κατά τη δήλωση του πίνακα και παραμένει αμετάβλητο. Μπορείτε να διατρέξετε το πίνακα χρησιμοποιώντας iterators ή με χρήση for που γνωρίζεται από τη γλώσσα C. H δομή std::array υποστηρίζει random access iterators.
#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; } }