Du bist nicht eingeloggt.

Login

Pass

Registrieren

Community
Szene & News
Locations
Impressum

Forum / Bits und Bytes

cpp/c++/oop Containerklassen

DAHAKA - 32
Fortgeschrittener (offline)

Dabei seit 07.2006
49 Beiträge

Geschrieben am: 17.05.2014 um 15:26 Uhr

Ich bräuchte hilfe beim c++ programmieren. Kann mir jemand kurz und Knapp sagen wie containerklassen zu funktionieren haben?
Ich soll eine aufgabe mit container realisieren aber ich weiß nicht genau wie.
Hab zwar ein gutes Buch versteh aber trotzdem nur bahnhof.

Danke schonmal

Willst du den Charakter eines Menschen erkennen, so gib ihm Macht. [Abraham Lincoln]

le_mon - 31
Experte (offline)

Dabei seit 02.2011
1771 Beiträge

Geschrieben am: 17.05.2014 um 16:40 Uhr

ich glaube nicht, dass du hier groß Hilfe finden wirst.
Such doch mal in einschlägigen Foren nach Hilfe.
Okolus - 39
Halbprofi (offline)

Dabei seit 11.2005
115 Beiträge
Geschrieben am: 17.05.2014 um 20:04 Uhr
Zuletzt editiert am: 17.05.2014 um 20:59 Uhr

Im Prizip kannst ein normales array auch als Data-Container ansehen. Im OOP-Sinn werden dort drin Instanzen von Klassen gespeichert, also in C++ normalerweise Zeiger auf die Instanzen. Sprich wenns zum Beispiel ne klasse "MyClass" gibt, könntest du mit

MyClass* myContainer[20];
for(int i=0; i<20; i++)
{
myContainer[i] = new MyClass();
}

ein Container mit 20 Instazen erstellen. Da dies allerdings nicht sehr dynamisch ist, baut man sich gerne mit hilfe von Templates Containerklassen. Diese können die dort abgelegten Instanzen je nach implementierung nicht nur wie im Beispiel in einer Simplen Liste, sondern auch in einem Baum, oder sonst irgendwie ablegen. Außerdem kann die Containerklasse wenn nötig natürlich auch dynamisch Speicher allokieren, womit die Größe des Containers nicht wie im Beispiel beim erstellen festgelegt werden muss. Und das wars eigentlich schon.

Noch kurz zu Templates:
Es erscheint etwas seltsam, aber wenn man eine Klasse mit Templates schreibt, muss man den gesammten Quellcode in die Header-Datei packen, weil ja zur Compilierzeit des Moduls noch nicht bekannt ist, in welchem Anwendungsfall welcher Typ verwendet werden soll. Aber dafür gibt Bücher...

Noch kurz das obrige Beispiel mit ner Containerklasse die wir mal "DynArray" nennen und die Daten in einem Array mit dynamischer Größe ablegt.

DynArray<MyClass*> MyContainer;
myContainer.setSize(20); //Angenommen die Methode setzt die größe
for(int i=0; i<20; i++)
{
myContainer[i] = new MyClass(); //[] muss in DynArray-Klasse gesetzt sein
}

Vorteil wäre hier, dass man den Container nacher noch mit z.B.
myContainer.setSize(40);
vergrößern und weitere Elemente einfügen kann.

[zustimmen2 Personen stimmen diesem Beitrag zu:
DAHAKA, le_mon, ... mehr anzeigen

DAHAKA - 32
Fortgeschrittener (offline)

Dabei seit 07.2006
49 Beiträge

Geschrieben am: 18.05.2014 um 09:31 Uhr

Vielen Dank. In den Büchern wurde nur erklärt tu das tu das ich hab das garnicht so verstanden. Aber das is echt gut erklärt hast mir echt weitergeholfen danke nochmal :)

Willst du den Charakter eines Menschen erkennen, so gib ihm Macht. [Abraham Lincoln]

bredator - 41
Champion (offline)

Dabei seit 03.2008
5319 Beiträge

Geschrieben am: 18.05.2014 um 17:58 Uhr

@Okolus

Ergänzend wäre noch zu sagen, dass ein dynamischer Array zwar so genannt werden kann, der korrekte Terminus aber Vector lautet ;)

Lache nicht über jemanden, der einen Schritt zurück macht. Er könnte Anlauf nehmen.

  [Antwort schreiben]

Forum / Bits und Bytes

(c) 1999 - 2025 team-ulm.de - all rights reserved - hosted by ibTEC Team-Ulm

- Presse - Blog - Historie - Partner - Nutzungsbedingungen - Datenschutzerklärung - Jugendschutz -