====== Χρήση του τελεστή [ ] για την πρόσβαση στα στοιχεία ενός container ====== ===== Χρήση σε sequence_containers ===== Ο τελεστής %%[ ]%% διατίθεται σε //sequence containers// των οποίων μπορούμε να προσπελάσουμε οποιαδήποτε θέση με χρονικό κόστος **Ο(1)**. Οι //containers// αυτοί είναι οι **//array, vector//** και **//deque//**. Μέσω του τελεστή αυτού και με τη βοήθεια του τελεστή ανάθεσης %%=%% για το αντικείμενο που εισάγεται, μπορούμε να λάβουμε ή να θέσουμε την τιμή μιας θέσης του //container//. Στο παρακάτω παράδειγμα ανατίθεται σε ένα //container// τύπου //array// περιεχόμενα μέσω του τελεστή %%[ ]%%. Μεταγλωττίζοντας και εκτελώντας το πρόγραμμα θα παρατηρήσετε ότι κατά την ανάθεση καλείται ο τελεστής %%=%% (//operator=//) της κλάσης //Student//. #include // std::cout #include // std::copy #include // std::array #include // std::array #include "Student.hpp" int main () { Student students[] = { Student("Peter_Pan", 1234), Student("Tinker_Bell", 1235) }; std::cerr << "----- Init array -----" << std::endl; std::array myarray; for(int i=0; i<2; i++) { myarray[i] = students[i]; // we use operator= here } std::cerr << "-------------------------\n"; std::cerr << "myarray contains:"; for (std::array::iterator it = myarray.begin(); it!=myarray.end(); ++it) std::cerr << ' ' << *it; std::cerr << std::endl; std::cerr << "-------------------------\n"; return 0; } ===== Χρήση σε map και unordered_map ===== Ο τελεστής %%[ ]%% διατίθεται σε containers τύπου map για την απεικόνιση κλειδιών σε τιμές. Όπως και παραπάνω μπορεί τόσο να ανακτήσει όσο και να καταχωρήσει μία τιμή σε ένα κλειδί. Παράδειγμα προγράμματος όπου χρησιμοποιείται ο συγκεκριμένος τελεστής δίνεται παρακάτω: // accessing mapped values #include #include #include int main () { std::map mymap; mymap['a']="an element"; mymap['b']="another element"; mymap['c']=mymap['b']; std::cout << "mymap['a'] is " << mymap['a'] << '\n'; std::cout << "mymap['b'] is " << mymap['b'] << '\n'; std::cout << "mymap['c'] is " << mymap['c'] << '\n'; std::cout << "mymap['d'] is " << mymap['d'] << '\n'; // creates mymap['d'] with an empty // string as assosiative value. std::cout << "mymap now contains " << mymap.size() << " elements.\n"; return 0; }