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.

Einige Include-Dateien

Kapitel 1: Einführende Beispiele

Einfache Summe
Bitfeld
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 Datei
Eingabe mit cin
Ganze Zeile einlesen

Kapitel 3: Programmstrukturierung

Fakultät mit Funktion berechnen
Rekursion: 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 Ort1
Klasse Ort
Klasse Rationale Zahlen
Destruktor
Delegierender Konstruktor

Kapitel 5: Zeiger

Zusammengesetzter C-String
C-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 Strings
Klasse 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 Objekte
Abstrakte Klasse
virtual-Destruktor
Mehrfachvererbung: Initialisierung der Basisklasse
virtual-Mehrfachvererbung
Delegation vs. privater Vererbung

Kapitel 8: Fehlerbehandlung mit Exceptions

Fehlerbehandlung bei Streams
Assert 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 lesen
Lesen 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ücke

Kapitel 13: Threads

erstes Thread-Beispiel
Thread 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 Label
Window
Signale und Slots
Dialog
Thread mit Qt
Verzeichnisbaum anzeigen

Kapitel 15: Internet-Anbindung

Host-Ip-Adresse ermitteln
TCP-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-Anfragen
Klasse Datenbank: SQlite-C++-Schnittstelle
Rechnung schreiben
Rechnung schreiben (Variante)

Kapitel 21: Von der UML nach C++

Assoziation

Kapitel 22: Performance, Wert- und Referenzsemantik

Bewegender Konstruktor
Optimierter +-Operator für Strings

Kapitel 24: Algorithmen für verschiedene Aufgaben

Kapitel 24.1: Algorithmen mit Strings

String aufsplitten
String 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 durchsuchen
Ersetzungen 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 erzeugen
Folge 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 finden
Element 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-Algorithmen

Kapitel 24.7: Heap-Algorithmen

Heap-Algorithmen

Kapitel 24.8: Container-Vergleich

Container-Vergleich
Container-Vergleich, Variante

Kapitel 24.9: Rechnen mit komplexen Zahlen

Rechnen mit dem Datentyp complex

Kapitel 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üfen
Syntax 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öschen
Datei 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

forward
move
Paare
Tupel
Binden von Argumentwerten
Binden von Argumentwerten, Variante
Binäre Funktion std::plus()

Kapitel 28: Container

Vektor für bool-Werte
Verschmelzen 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 bestimmen
Algorithmus 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_ptr
shared_ptr
shared_ptr für Arrays
weak_ptr
placement new
uninitialized copy