Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

C++

Map/Multimap

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Multimaps können mit sogenannten assoziativen Arrays (Listen) verglichen werden. Der rasche Zugriff auf ein benanntes Element ist ein Beispiel. Sehen Sie die Verwendung und weitere Möglichkeiten, mit Multimaps zu arbeiten.

Transkript

Ich zeige Ihnen jetzt nochmal, was es mit Map und Multimap auf sich hat, da kann man nämlich sehr schöne assoziative Strukturen aufbauen. Also hier haben wir jetzt mal mit class kleiner zunächst einen Vergleichsoperator aufgebaut. So was kann man nachher in Klammern nämlich bei den str Funktionen angeben, in den spitzen Klammern meine ich, als Vergleich. Wir wollen hier zwei Stringkonstanten miteinander vergleichen, also, "const char *s" um es genau zu sagen, mit "strcmp", das ist eine Standard C-Funktion. Vergleiche ich die beiden Strings und die verlangt das entsprechende Ergebnis true oder false ab. Damit kann ich natürlich dann Sortierungen aufbauen, das geschieht jetzt mal anstelle des Default Operators, um Ihnen auch mal zu zeigen, wie man hier so eine eigene Klasse dafür aufbauen kann. Dann habe ich hier eine kleine Nutzfunktion, ship Klasse gebaut, "id, preis und dvt", das Gewicht sozusagen, und dann hier den Konstruktor, und hier den entsprechenden Konstruktor, dass es einfach setzt, mehr sollte auch gar nicht tun, weil wir wollen das jetzt im Hauptprogramm verwenden, mit Map und Multimap. Ich definiere hier erst mal ein paar Maps. Maps bekommen immer zwei Parameter: einen const char*, da habe ich mein Schlüsselwort drin, was ich als Schlüssel verwende, um was zu finden, und den Parameter, den zweiten, das ist dann die Nutzfunktion sozusagen, der Wert der dazugeordnet wird, zu diesem String. Nicht ähnlich etwas früher mal gemacht haben, mit c*, da habe ich eine eigene Klasse für so was definiert, ist es ja auseinandergezogen und dafür auch optimiert. Und den kleiner_str, den verwenden wir zum Vergleich. Hier habe ich die Map und hier habe ich natürlich einen Iterator, den ich wieder brauche. Dann kann ich hier aber auch an zweiter Stelle die ship Klasse eingeben, die shipcls, auch mit kleiner Funktion, der eben auch zwei Texte vergleicht, das bezieht sich dann auch auf die linke Hälfte, weil hier fange ich nämlich an, damit zu arbeiten. Und bei Multimap ist es ähnlich, auch hier sind zwei Parameter, da macht man das Gleiche dann, const char*, erst einmal den Parameter für die Nutzfunktion, für den Vergleich, jetzt ist es hierbei als str, die kleiner_str Funktion, die dann entsprechend diese Strings vergleichen kann und die ship Klasse, dann zeig ich gleich einen Unterschied und was man damit machen kann, und zunächst einmal sehr elegant ist die Zuweisung hier, kann ich einfach "my map", irgendeiner Name ist gleich einem Datenwert, wirklich assoziativ zugreifen. Ich greife über den Inhalt des Strings zu wie ein Schlüsselwort, und kann hier meine Werte ablegen und ausgeben kann ich sie hier mit Hilfe eines Iterators. Ich kann auch suchen, das geht ganz, ganz easy, indem ich einfach "my map" und dann an Klammern, hier in den Klammern einfach den Suchwert reinschreibe, brauche ich kein find oder so was, und hier unten mit "my map2" geht es ähnlich, da kann ich hier auch die entsprechenden Werte zuordnen, diesmal aber nicht nur einen Zahlenwert hier oben, sondern die ganze ship Klasse, die ich hier reinschreibe, mit Insert kann ich ebenfalls Datenwerte einfügen, dazu brauche ich aber dann die pair-Funktion, um eben zwei verschiedene Datentypen da einzulesen, nämlich meine ship Klasse und den Text, das das geschieht dann hier einfach, in Klammern mit den entsprechenden Parametern, dann geben wir das Ganze wieder aus, wir können was löschen, "Adelaid" wird jetzt zum Beispiel gelöscht, er sucht dann einfach hier nach dem entsprechenden Begriff, "my map2" ist hier noch eine ganz normale Map, also keine Multimap. Dann gucken wir uns an, was da als count entsprechend rauskommt, und was hier unten gelöscht wird. Nun, gehen wir mal zum Multimap, da ist es so, da kann ich jetzt leider nicht mehr so was schreiben, ist klar, weil es jetzt nicht eindeutig wird, das geht nur noch mit Insert, dann kann ich hier mit Insert die entsprechenden Datenwerte einlesen, also, "Atlantis" machen wir hier mehrfach, damit wir ein bisschen was sehen, gebe das Ganze mit dem Iterator wieder aus, wir löschen "Atlantis" an dieser Stelle und geben hier, mit cout den count raus, hier bekomme ich nämlich jetzt auch einen count, der Sinn macht, und gucken wir uns anschließend an, was da noch übrig geblieben ist bei den letzten Aktionen. Und hier oben sieht man einfach die Werte, die wir eingegeben haben, das funktioniert eigentlich ganz gut. Die Treylon-Suche ergibt 20.4, nämlich genau den Floatwert, nicht etwa die Anzahl der Elemente, ist klar, weilich ja hier jedes zweite Paar direkt bekomme, es ist dieser hier, und hier habe ich ja meine Liste, die wir jetzt auch wieder eingegeben haben, da haben wir alles ausgegeben bei dem Text, ich lösche "Adelaid" raus, dann sehen Sie, kommen hier unten nur noch die Restlichen. Nun kommen wir zum Multimap, da habe ich mehrmals "Atlantis" drin und "Titan", auch hier geben wir immer nur einen Wert raus, das können Sie gerne zu Hause mal umbauen. Wenn ich aber jetzt "Atlantis" lösche, bekomme ich als Ergebnis den Wert 3, und damit sind auch alle drei Vorkommnisse von Atlantis gelöscht. Das ist hier oben nicht der Fall, da hätte ich nur einen drin gehabt. Wenn ich "Adelaid" lösche, die war aber jeweils nur einmal drin, dann würde auch nur ein Element gelöscht werden. Das können Sie aber gern mal bisschen ausprobieren, mit diesen Maps und Multimaps ein bisschen mal zu Hause spielen.

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!