Lektion 67:

Die Klasse SortedArray

Damit man die Daten, die in der Klasse Set gehalten werden, schön ausgeben kann, wäre es günstig, auch hier einen Arrayzugriffs-Operator zu definieren. Leider mutiert die Klasse Set dadurch eigentlich zu einer Klasse SortedArray. Also wird die Klasse Set kurzerhand umbenannt und heißt ab jetzt SortetdArray.

Legen Sie dazu einfach eine neue Datei namens "SortedArray.h" an, kopieren Sie alles aus der Datei "Set.h" hinein und ersetzen Sie in dieser Datei "Set" durch "SortedArray".

Folgende main-Funktion soll funktionieren:

void main()
{
   SortedArray<string> s;
   s.insert("Hans");
   s.insert("Klaus");
   s.insert("ich");
   s.insert("Fritz");
   s.insert("Anna");
   for(int i=0;i<s.getSize();++i)
      cout<<s[i]<<endl;
};

Die Ausgabe des Programms soll eine sortierte Liste dieser Personen sein.

Die neuen Funktionen in der Klasse Set sind einfach.

   int getSize()
   {
      return m_size;
   };
   T &operator[](int index)
   {
      assert(index<m_size);
      return m_data[index];
   };

Schon wieder hat sich ein kleines Sicherheitsloch aufgetan.

void main()
{
   SortedArray<string> s;
   s.insert("Anna");
   s.insert("Fritz");
   s[0]="Egon";
   for(int i=0;i<s.getSize();++i)
      cout<<s[i];
};

Die Zuweisung erlaubt, daß die Sortierung zerstört wird. Damit funktioniert die binäre Suche nicht mehr.

 Das läßt sich aber leicht ausschalten, indem nur eine const-Referenz zurückgegeben wird.

   const T &operator[](int index)
   {
      assert(index<m_size);
      return m_data[index];
   };

Und schon lassen sich hübsch sortierte Listen ausgeben. Wir nähern uns immer weiter dem Telefonbuchprogramm.



Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern.
[aktuelle Version] [inhalt] [index]      [Fehlerkorrektur, Verbesserungsvorschlag]

© Volkard Henkel <volkard@normannia.de>, last update: 08/25/00