Dipl.-Ing. Martin Weitzel, 64380 Roßdorf bei Darmstadt

mccc2025w27

Letzter Upload des Repositories

https://drive.google.com/file/d/1dm6rvEjw9WN5ScsZBoBA9faXhx5XKpg2/view?usp=sharing

Letzter Source Code zum Algorithmus, der alle Duplikate bis auf das erste eliminiert.

https://godbolt.org/z/d3fe5zoq7

AUFGABE nachher ist es, einen ählichen Algorithmus (keep_last_duplicate_copy) zu schreiben.

Wer es sich als reine Fleißarbeit antun will, der kann gern auch noch zwei weitere Algorithmen schreiben, welcher auf das Kopieren verizichten und ggf. intern mit Revers-Iteraroren arbeiten. Dann kann man aber nicht mehr direkt mit Stream-Input testen sondern muss den Input in einem Container übergeben, dessen Iteratoren zumindest zur Bidirektional Kategorie gehören.

https://godbolt.org/z/Yq9ozhsdW

Hier für alle, die ich gestern leider vertrösten musste in Bezug auf das von mir mehrfach angekündigte "FruitBasket" Beispiel - hier kommt es endlich. Ich verlinke direkt das Chat-Protokoll:

https://chatgpt.com/share/68643f96-30d4-800a-ba12-ed0d1ca06466

Die Versionen 1 bis 3a + 3b hatte ich aus früheren Schulungen übernommen. Damals kam `any` noch aus der Boost-Library. Da hat sich aber nichts geändert bei der Übernahme in den C++-Standard (außer dass das jetzt nicht mehr im namespace boost sondern im namespace std liegt).

Die Beispiele zu `variant` ab der Versionen 4a habe ich von ChatGPT neu erzeugen lassen, da es hier ein paar Unerschiede dazu gibt, wie das früher mit `boost::variant` erledigt wurde. Insbesondere sieht das Visitor-Pattern jetzt eleganter aus.

Was ich heute Abend nicht mehr getan habe, ist den von ChatGPT (also ab 4a) generierten Code in das Github/VS-Code repository zu laden. Aber das ist jetzt wirklich nur noch eine Kleinigkeit.


Quick Hack zu "remove all duplicates: https://godbolt.org/z/z6oKra8dx

Debugging in VSCode: https://chatgpt.com/share/6863f525-9c24-800a-b46a-b1237aa3444d

 

Aufgabe Dienstag Nachmittag:

Template-Funktion schreiben `remove_all_duplicates`, parametrisiert mit DREI Iteratoren, die durchgereicht werden an `std::copy_if`.

`std::copy_if` hat VIER Argumente, das letzte ist eine Funktion, die zur Prüfung jedes einzelnen dann  kopierenden oder nicht zu kopierenden Elements aufgerufen wird. `remove_all_diuplicates` übergibt hier typischerweise ein Lambda.

Außerdem gibt es in der zu schreiben Funktion ein `std::set` für den WERT-Typ der dereferenzierten Iteratoren. In dieses set fügt das das als viertes Argument an `std::copy_if` übergeben Lambda die Werte ein und liefert als return-Wert ein `true` oder `false`, welches der`std::copy_if` sagt, ob ein Wert zu kopieren ist oder nicht..

Da ds Einfügen in das set mit der Member-Funktion `emplace`, welche über ihren Return-Wert (der ein `std::pair` ist), anzeigt ob der Wert tatsächlich neu eingefügt wurde oder bereits vorhanden war. 

 

 

 

Aktuelleler Stand des Repositories am Dienstagnachmittag

https://drive.google.com/file/d/1iz7et9rDtmr9427JU0_DszgnRnSeV8AG/view?usp=sharing

Live-Demo zu Matt Godbolts Compiler Explorer

https://godbolt.org/z/P55f85vYo

Aktueller Stand des Repositories Dienstagmorgen:

https://drive.google.com/file/d/1NNR0vDNl4yNk1crv_VfN12J2qt_8p8LW/view?usp=sharing

Beginn Dienstag und Mittwoch:

Ab ca. 7:45 kann man in den Schulungsraum und ab 8:00 kann man dann GANZ SICHER hinein.

um 8:30 geht es mit dem ersten Unterrichtsteil weiter bis dahin ggf. Abschluss des Übungsblocks von Montag am Nachmittag.

weiterer Übungsblock (immer noch für die Aufgabe: DRY and OCP from the Start ab 11:15 bis ca. 14:30 (dazwischen Mitagspause/Essen gehen).

Ziel der Übungsblöcke ist, dass jeder mit seiner eigenen Geschwindigkeit arbeiten kann, NICHT, dass bis zu einem bestimmten Zeitpunkt ein bestimmtes Ziel erreicht wird. (Die Aufgabe
"Dry and OCP from the Start" wird nach Plan zwar am Dienstagmittag abgeschlossen, das ist aber nicht für alle verpflichtend.)

Ein abschließender Übungsblock Dienstag begint dann um 15:30, und wer am Mittwochmorgen  um 7:45 kommt, kann am Dienstag um 16:15 gehen. Ich selbst bleibe am Dienstag bis 17 Uhr zur Betreung derjenigen da, die nicht den frühen Übungsblock (vor 8:30) in Anspruch nehmen wollen.

Für die Übungsblöcke ab Dienstagnachmitteg werden verschienede "Nano-Projekte" zur Auswahl angeboten. Ein kleines Stimmungsbild, zu welchen Themen ich ich bis dahin etwas vorbereiten kann bzw. soll, hole am Dienstag im Laufe des Vormittags ein.

Komplett-Unterlagen ich werde ca. halbtäglich dort Aktualisierungen vornehmen. Sowie noch eine weitere NACH dem Ende der Schulung.

https://drive.google.com/file/d/1LLDH2XmlWJJc9ZX0oUwg2_Kig7tc4Xyq/view?usp=sharing