User Tools

Site Tools


cpp:stl:operator

Χρήση του τελεστή [ ] για την πρόσβαση στα στοιχεία ενός container

Χρήση σε sequence_containers

Ο τελεστής [ ] διατίθεται σε sequence containers των οποίων μπορούμε να προσπελάσουμε οποιαδήποτε θέση με χρονικό κόστος Ο(1). Οι containers αυτοί είναι οι array, vector και deque. Μέσω του τελεστή αυτού και με τη βοήθεια του τελεστή ανάθεσης = για το αντικείμενο που εισάγεται, μπορούμε να λάβουμε ή να θέσουμε την τιμή μιας θέσης του container.

Στο παρακάτω παράδειγμα ανατίθεται σε ένα container τύπου array περιεχόμενα μέσω του τελεστή [ ]. Μεταγλωττίζοντας και εκτελώντας το πρόγραμμα θα παρατηρήσετε ότι κατά την ανάθεση καλείται ο τελεστής = (operator=) της κλάσης Student.

student_array.cpp
#include <iostream>     // std::cout
#include <algorithm>    // std::copy
#include <array>       // std::array
#include <array>        // 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<Student,2> 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<Student,2>::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 για την απεικόνιση κλειδιών σε τιμές. Όπως και παραπάνω μπορεί τόσο να ανακτήσει όσο και να καταχωρήσει μία τιμή σε ένα κλειδί. Παράδειγμα προγράμματος όπου χρησιμοποιείται ο συγκεκριμένος τελεστής δίνεται παρακάτω:

map_char2string.cpp
// accessing mapped values
#include <iostream>
#include <map>
#include <string>
 
int main ()
{
  std::map<char,std::string> 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;
}
cpp/stl/operator.txt · Last modified: 2023/05/29 17:15 by gthanos