Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

C++

Vectorobject

Testen Sie unsere 2017 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Vektoren, die auf Objekte zeigen, zu gestalten, ist der Vorgehensweise zu einfachen Datentypen ähnlich. Sehen Sie dem Trainer zu, wie er Objekt-Vektoren erzeugt und Operatoren überlädt.

Transkript

Mit der Standard-Template-Library kann man sehr schön arbeiten mit Vektoren, und zwar kann man mit Vektoren auch Vektoren von eigenen Objekten, von eigenen Klassen anlegen, und das zeige ich jetzt Ihnen mal in einem Beispiel, was man da machen kann. Also, hier haben wir die Klasse myclass, die hat einfach zwei Elemente, i1 und i2, mit denen wir eigentlich arbeiten wollen. Also, der Vektor besteht dann aus zwei Komponenten, den wir später haben, aber eben auch die dazugehörigen Methoden, die ich hier noch definiere. Einmal brauch man Kontruktor, das ist klar, zu Initialisierung, dann haben wir hier einen Kopierkonstruktor, brauchen wir für Zuweisungen und entsprechend also beim Anliegen von Objekten und beim Zuweisen nachher später, ist der hier ganz hilfreich. Das wäre wahrscheinlich hier auch ohne gegangen, aber besser man definiert hier immer sauber, es ist ganz gut. Also, return (*this), Hier liefert er nämlich, das ist wichtig, bei diesem Ist-Gleich-Operator, das Element selber wieder zurück. Dann brauche ich hier noch einen überschriebenen Kleiner, einen Vergleich. Das ist wichtig, wenn man die Suchfunktionen verwendet oder beziehungsweise die Sortier-Funktionen nachher bei der Standard-Klassen-Template-Library, sonst funktioniert es unter Umständen her nicht. Und was mache ich hier? Ich hab zwei Objekte, die ich miteinander vergleichen will. Da muss ich natürlich entscheiden, was ich vergleiche. Ich nehme jetzt hier i1, der i2 ist egal, den ignorieren wir jetzt einfach. Und dann brauche ich noch die == Operation, also der Vergleich, und auch hier wird nur i1 verglichen, nicht der Rest. Wenn man das nicht macht, würde man die Pointer vergleichen. Dann brauchen wir eine Methode zum Setzen von Werten. Das machen wir hier mal gleich mit zwei Parametern. Und ich möchte sie hier einzeln zurückholen, get_val() und get_val2() geben mir einfach die Werte wieder aus. Dann habe das ich auch sauber gekapselt und muss keine Public-Werte reinschreiben. Ja, und dann kommen wir zum unseren Hauptprogramm. Wir definieren jetzt einen Vektor myclass, also ich habe hier jetzt meine Klasse angegeben mit 10 Elementen. Beim Initialisieren kann ich jetzt set_val hier direkt verwenden. Auch hier werden die Quadratzahlen abgespeichert, im ersten Element das Quadrat, und im zweiten speichern wir uns aber den Index. Das Ganze geben wir dann hier mal mit beiden Werten get_val() und get_val2() wieder aus. Jetzt kommen die eleganten Geschichten, die ich halt hier auch machen kann, zum Beispiel Suchen in meiner Klasse, mit einem Iterator muss ich das wieder tun, auch vector<myclass::iterator, dann muss natürlich von der gleichen Klasse sein. Das ist klar. Und ich habe hier noch zwei Klassen suchall und sucherg. Jetzt gehen wir los. Den Wert, den wir suchen müssen, das ist ein ganz normaler Integer hier oben definiert. Und dann kann ich mir hier diese Hilfsvariable setzen. Ich brauch halt das Objekt, damit auch die Suchwerte, weil das hier auch wieder Klassen sind, dann hier entsprechend reinsetzen kann suchwert, 0. Der zweite interessiert eigentlich nicht dabei. Bei den Vergleichen haben wir i2 nicht verglichen. Mit find (ara.begin() ,ara.end() sucht er den insgesamten Bereich. Und suchall ist eben das Objekt, was ich hier übergeben muss. Nun kann man das Ganze hier auswerten, wenn Ende erreicht ist, dann habe ich's nicht gefunden, dann gebe ich hier zum Beispiel den Wert suchall.get_val() raus, nämlich den Wert, den ich gesucht habe. Und wenn er gefunden wurde, dann kann ich das hier zum Beispiel so machen. Ich könnte aber auch das Suchergebnis hier direkt verwenden und da das reinschreiben sozusagen, meine Hilfsvariable. Aber mit (*idx.get_val) bekomme ich eine Methode, wenn man hier den Punkt drückt, dann sieht man, dass man hier auch direkt an diese Werte rankommt, und get_val2() entsprechend und hinten einen Zeilenvorschub. Sehr schön ist auch das Vergrößern. Das funktioniert natürlich mit Vektoren und beliebigen Klassen, die dadrin definiert sind, genauso suchall.set_val definiere ich mir erst mal einen Hilfswert, mit ara.push_back (suchall) verschiebe ich den auf den Vektor drauf. Und dann wird man danach nochmal suchen mit 3,0, den zweiten Parameter brauche ich hier nicht, den kriege ich als Rückgabewert. Hier, wenn nicht gefunden, könnte ja passieren, gebe ich entsprechend einen Fehler aus, ansonsten kann ich mit dem Wert hier direkt holen und wieder ausgeben. Was man auch machen kann, ist den Vektor einfach zu löschen. clear ist also eine solche Methode, die man da anwenden kann. Damit habe ich keine Elemente mehr drin. Wenn ich jetzt neue reinschreiben will, muss ich die zum Beispiel mit ara.push_back einschreiben. Das machen wir jetzt hier. Schreiben wir einfach den Wert rein, der hier vorher schon drin stand, zum Beispiel als Initialisierungswert, und hier wird er dann neu belegt mit den Kubikzahlen. Und das Ganze geben wir nochmal am Schluss wieder aus und können uns das jetzt gleich mal anschauen, wie das Ganze auf dem Bildschirm aussieht. So, ich schroll mal hoch, habe ich die Quadratzahlen, das kennen wir schon, suche nach Quadratzahlen, funktioniert ganz prima, Dann habe ich hier noch den Wert 3 reingelegt, der dann auch wieder gefunden wird. Jetzt bekomme ich auch sehr schön meinen selbstgebauten Parameter da wieder zurück, das i2. Und hier haben wir jetzt die Kubikzahlen, die am Schluss noch ausgegeben werden. Wir haben also hier ein ganz neues Array. Das schöne ist halt, dass man die beliebig aufbauen und abbauen kann und suchen kann damit. Also, mit dieser Standard-Template-Library kann man schöne Sachen machen, und Sie haben erst mal gelernt, wie man mit Vektoren umgeht.

C++

Machen Sie sich mit den einfachen Grundlagen zu C++ vertraut und lernen Sie anhand zahlreicher Übungs- und Codebeispiele die Klassenkonzepte, Prozeduren und Funktionen kennen.

9 Std. 3 min (143 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Video-Training auf DVD mit Bonusmagazin

+ Tutorial to go: Mit Videos für iPod, iPhone & Co.

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!