Hinweis: Die Erläuterungen zu den Code-Beispielen finden Sie in den entsprechenden Kapiteln des Buchs. Sehr viele Beispiele sind jedoch mit einigen C++-Kenntnissen auch so verständlich.
Kapitel 1: Einführende Beispiele
Einfache SummeBitfeld
Sichtbarkeit und Blockstruktur
Fallunterscheidung mit switch/case
Fakultätsberechnung
Genauigkeitsverlust bei float
Größter gemeinsamer Teiler
Grenzwerte für Ganzzahl-Typen
Grenzwerte für float- und double-Zahlen
Mathematische Ausdrücke
Einfache Menu
Overflow-Test
Primzahlberechnung
Erkennung römischer Ziffern mit if
Erkennung römischer Ziffern mit switch
Überlagerung von Daten mit union
Vektoren sind dynamisch
Typische Vektor-Benutzung
Typische String-Operationen
Kapitel 2: Einfache Ein-/Ausgabe
Kopieren einer DateiEingabe mit cin
Ganze Zeile einlesen
Kapitel 3: Programmstrukturierung
Fakultät mit Funktion berechnenRekursion: Türme von Hanoi
Vergleichsfunktion mit Template
Parameterübergabe per Wert
Parameterübergabe per Referenz
Default-Parameter
Quicksort
Quersumme
Prüfung zur Compilationszeit mit static_assert
Funktion mit Gedächtnis (static)
Überladen von Funktionen
Kapitel 4: Objektorientierung 1
Klasse Ort1Klasse Ort
Klasse Rationale Zahlen
Destruktor
Delegierender Konstruktor
Kapitel 5: Zeiger
Zusammengesetzter C-StringC-Array von C-Strings
Parameterübergabe mit Zeiger
Parameter des main()-Programms
Zweidimensionales C-Array
Klasse für zweidimensionales Array/Matrix (Variante 1) Variante 2 siehe hier.
Binäres Schreiben von Daten
Binäres Lesen von Daten
Matrix binär und als ASCII schreiben
Zeiger auf Funktion
Quicksort und Funktionszeiger
Analyse von Deklarationen
Zeiger auf Elementdaten
Zeiger auf Elementfunktion
Kapitel 6: Objektorientierung 2
Klasse für StringsKlasse für Strings mit optimiertem Speicher
Klassenspezifische Daten: Beispiel Nummerierte Objekte
Stack fester Größe Anwendung dazu
Stack mit Template-Parameter für die Größe Anwendung dazu
Template-Metaprogrammierung: Primzahlen
Template-Metaprogrammierung: Berechnung von 2n
Variadic Templates: Parameter anzeigen
Variadic Templates: Parameter zählen
Kapitel 7: Vererbung
Erben graphischer ObjekteAbstrakte Klasse
virtual-Destruktor
Mehrfachvererbung: Initialisierung der Basisklasse
virtual-Mehrfachvererbung
Delegation vs. privater Vererbung
Kapitel 8: Fehlerbehandlung mit Exceptions
Fehlerbehandlung bei StreamsAssert mit Exception
Speicherbeschaffung und Fehlerbehandlung
Kapitel 9: Überladen von Operatoren
Klasse Rational jetzt mit überladenen arithmetischen OperatorenÜberladen des Index-Operators (Klasse Vektor)
Vektor mit mathematischen Operationen
++ überladen (Klasse Datum,)
"Intelligente" Zeiger
Funktionsobjekt
new und delete überladen
new mit malloc implementieren
Unterscheidung zwischen Heap- und Stack-Objekten
Fehlendes delete entdecken
mehrdimensionale Matrizen, Überladen von [ ][ ]..
Kapitel 10: Dateien und Ströme
Benutzen eines Datei-Objekts nacheinander zum schreiben und lesenLesen und Schreiben auf einer Datei
Input-Statusbits
Manipulator Anwendung dazu
Positionierung in einer Datei
Umleitung auf Strings am Beispiel der Formatierung von Zahlen
Kapitel 12: Reguläre Ausdrücke
Interaktives Programm zum Testen regulärer AusdrückeKapitel 13: Threads
erstes Thread-BeispielThread mit detach() vom Aufrufer lösen
Synchronisation
Thread-Steuerung mit Flags
Interrupt
Genau einen Thread pro Objekt garantieren
Warten auf Ereignisse: Producer/Consumer
Reader/Writer
Kapitel 14: Grafische Benutzungsschnittstellen mit Qt
Qt-Programm mit LabelWindow
Signale und Slots
Dialog
Thread mit Qt
Verzeichnisbaum anzeigen
Kapitel 15: Internet-Anbindung
Host-Ip-Adresse ermittelnTCP-Socket mit Zeit-Client/-Server
TCP-Socket mit Zeit-Client/-Server (bidirectional)
UDP-Zeit-Client
UDP Zeit-Server
Atomuhr abfragen
HTTP-GET
Mini-Webserver
Kapitel 16: Datenbank-Anbindung
Interaktive Bearbeitung von SQL-AnfragenKlasse Datenbank: SQlite-C++-Schnittstelle
Rechnung schreiben
Rechnung schreiben (Variante)
Kapitel 21: Von der UML nach C++
AssoziationKapitel 22: Performance, Wert- und Referenzsemantik
Bewegender KonstruktorOptimierter +-Operator für Strings
Kapitel 24: Algorithmen für verschiedene Aufgaben
Kapitel 24.1: Algorithmen mit Strings
String aufsplittenString aufsplitten mit Boost
String in Zahl umwandeln
Umwandlung von String nach double mit Boost
Zahl in String umwandeln
Zahl in String umwandeln, mit Boost
Strings sprachlich richtig sortieren
Umwandlung in Klein- bzw. Großschreibung
Template für die sprachlich richtige Umwandlung
Umwandlung in Klein- bzw. Großschreibung für Deutsch (inkl. Umlaute)
Stringvergleich
Von Klein- bzw. Großschreibung unabhängiger Zeichenvergleich
Von Klein- bzw. Großschreibung unabhängige Suche in einem String
Kapitel 24.2: Textverarbeitung
Datei durchsuchenErsetzungen in einer Datei vornehmen
Code-Formatierer (nicht perfekt, siehe Aufgabe 24.1)
Ermitteln der Lines of Code (LOC) mit regulären Ausdrücken
Zeilen, Wörter und Zeichen zählen
CSV-Datei lesen
Kreuzreferenzliste
Kapitel 24.3: Operationen auf Folgen
Zahlenfolgen erzeugenFolge mit Werten initialisieren
Summe und Produkt
Mittelwert und Standardabweichung
Skalarprodukt
Partialsummen oder -produkte
Differenzenfolge
Minimum und Maximum
Elemente rotieren
Elemente verwürfeln
Dubletten entfernen
Dubletten in Containern mit Zeigern entfernen
Reihenfolge umdrehen
Anzahl der Elemente, die einer Bedingung genügen
Gilt die Bedingung für alle, keins oder wenigstens ein Element der Folge?
Folge permutieren
Lexikografischer Vergleich
Kapitel 24.4: Sortieren und Verwandtes
Folge in zwei Bereiche zerlegen, die einem bestimmten Kriterium genügen (partitionieren)Sortieren
Das n.-kleinste Element finden
Mergesort
Mergesort-Variante
Template für Mergesort
Mergesort mit Liste
Mergesort mit Vektor
Kapitel 24.5: Suchen und Finden
Element findenElement finden, Variante
Erstes Auftreten eines Elements finden
Teilfolge finden
Letztes Auftreten einer Teilfolge finden
Benachbarte Elemente finden
Benachbarte Elemente finden, Variation
Aufeinanderfolgende Werte, die einer Bedingung genügen, finden
Binäre Suche
Kapitel 24.6: Mengenoperationen auf sortierten Strukturen
Set-AlgorithmenKapitel 24.7: Heap-Algorithmen
Heap-AlgorithmenKapitel 24.8: Container-Vergleich
Container-VergleichContainer-Vergleich, Variante
Kapitel 24.9: Rechnen mit komplexen Zahlen
Rechnen mit dem Datentyp complexKapitel 24.10: Schnelle zweidimensionale Matrix
Zweidimensionales Array/Matrix (Variante 2 mit zusammenhängendem (contiguous) Memory-Bereich)Optimiertes zweidimensionales Array mit mathematischen Operationen
Kapitel 24.11: Vermischtes
Syntax eines Datums mit regulären Ausdrücken prüfenSyntax und Wert eines Datums mit regulären Ausdrücken prüfen
IP-Adresse mit regulären Ausdrücken prüfen
Zufallszahlen erzeugen
Kopieren von Elementen, die einer Bedingung genügen
Kopieren einer bestimmten Zahl von Elementen
Elemente transformieren
Elemente ersetzen
Elemente entfernen
Kapitel 25: Ein- und Ausgabe
Datei oder leeres Verzeichnis löschenDatei oder Verzeichnis löschen
Datei oder Verzeichnis umbenennen
Verzeichnis anlegen
Verzeichnis anlegen mit Boost
Verzeichnis anzeigen mit Boost
Verzeichnisbaum anzeigen
Tabelle formatiert ausgeben
Formatierte Eingabe, Beispiel Datum
Arrays als Block lesen oder schreiben
Kapitel 27: Hilfsfunktionen und -klassen der Standardbibliothek
forwardmove
Paare
Tupel
Binden von Argumentwerten
Binden von Argumentwerten, Variante
Binäre Funktion std::plus()
Kapitel 28: Container
Vektor für bool-WerteVerschmelzen zweier Listen
Verschieben von Elementen zwischen Listen
Stack
Warteschlange (queue)
prioritätsgesteuerte Warteschlange (priority queue)
Standardklasse array
Sortierte Abbildung (map)
Sortierte Menge (set)
Hash-Map (unordered_map)
Hash-Map, Variante
Bit-Set (bitset)
Kapitel 29: Iteratoren
Iteratortyp bestimmenAlgorithmus typabhängig wählen
Algorithmus typabhängig wählen, Variante
Reverse-Iterator
insert_iterator
inserter
back_insert_iterator
back_inserter
front_insert_iterator
front_inserter
Bestimmung von Wert- und Distanztyp
Kapitel 33: Speichermanagement
unique_ptrshared_ptr
shared_ptr für Arrays
weak_ptr
placement new
uninitialized copy
