C++-Standardbibliothek | 3 |
Inhalt | 5 |
Kapitel 1 – Einführung | 9 |
Konventionen | 10 |
Typografie | 10 |
Quellcode | 10 |
Wert versus Objekt | 11 |
Index | 11 |
Danksagungen | 11 |
C++ versus C++11 | 11 |
Kapitel 2 – Die Standardbibliothek | 13 |
Die Chronologie | 13 |
Überblick | 14 |
Praktische Werkzeuge | 14 |
Die Standard Template Library | 15 |
Numerik | 18 |
Textverarbeitung | 18 |
Ein- und Ausgabe | 19 |
Multithreading | 19 |
Bibliotheken verwenden | 20 |
Header-Dateien einbinden | 20 |
Namensräume verwenden | 21 |
Namen qualifiziert verwenden | 21 |
Ein ausführbares Programm erzeugen | 24 |
Kapitel 3 – Praktische Werkzeuge | 25 |
Praktische Funktionen | 25 |
std::min, std::max und std::minmax | 25 |
std::move | 27 |
std::forward | 28 |
std::swap | 29 |
Adaptoren für Funktionen | 29 |
std::bind | 30 |
std::function | 30 |
Paare | 31 |
Tupel | 32 |
Referenz-Wrapper | 34 |
Smart Pointer | 35 |
std::unique_ptr | 37 |
std::shared_ptr | 40 |
std::weak_ptr | 43 |
Zyklische Referenzen | 44 |
Type-Traits | 45 |
Typeigenschaften abfragen | 46 |
Typen vergleichen | 49 |
Typen modifizieren | 50 |
Zeitbibliothek | 51 |
Zeitpunkt | 52 |
Zeitdauer | 53 |
Zeitgeber | 54 |
Kapitel 4 – Gemeinsamkeiten der Container | 57 |
Erzeugen und Löschen | 58 |
Größe bestimmen | 59 |
Zugriff auf die Elemente | 60 |
Zuweisen und Tauschen | 62 |
Vergleiche | 63 |
Kapitel 5 – Sequenzielle Container | 65 |
Arrays | 67 |
Vektoren | 68 |
Deque | 70 |
Listen | 71 |
Einfach verkettete Listen | 73 |
Kapitel 6 – Assoziative Container | 77 |
Überblick | 77 |
Geordnete assoziative Container | 79 |
Überblick | 79 |
Schlüssel und Wert | 80 |
Das Vergleichskriterium | 80 |
Besondere Suchfunktionen | 81 |
Einfügen und Löschen von Elementen | 82 |
std::map | 83 |
Ungeordnete assoziative Container | 84 |
Überblick | 85 |
Schlüssel und Wert | 85 |
Performance | 86 |
Die Hashfunktion | 86 |
Die Details | 88 |
Kapitel 7 – Adaptoren für Container | 91 |
Stack | 91 |
Queue | 92 |
Priority Queue | 93 |
Kapitel 8 – Iteratoren | 95 |
Kategorien | 96 |
Iteratoren erzeugen | 97 |
Nützliche Funktionen | 98 |
Adaptoren | 100 |
Einfügeiteratoren | 100 |
Stream-Iteratoren | 101 |
Kapitel 9 – Aufrufbare Einheiten | 103 |
Funktionen | 103 |
Funktionsobjekte | 104 |
Vordefinierte Funktionsobjekte | 104 |
Lambda-Funktionen | 105 |
Kapitel 10 – Algorithmen | 107 |
Konventionen für Algorithmen | 108 |
Iteratoren als Bindeglied | 109 |
for::each | 109 |
Nicht modifizierende Algorithmen | 110 |
Elemente suchen | 110 |
Elemente zählen | 112 |
Bedingungen auf Bereichen testen | 112 |
Bereiche vergleichen | 113 |
Bereiche in Bereichen suchen | 114 |
Modifizierende Algorithmen | 116 |
Elemente und Bereiche kopieren | 116 |
Elemente und Bereiche ersetzen | 117 |
Elemente und Bereiche entfernen | 118 |
Bereiche füllen und erzeugen | 119 |
Bereiche verschieben | 120 |
Bereiche vertauschen | 121 |
Bereiche transformieren | 122 |
Bereiche umdrehen | 123 |
Bereiche rotieren | 123 |
Bereiche zufällig neu ordnen | 124 |
Duplikate entfernen | 125 |
Partitionierungen | 126 |
Sortieren | 128 |
Binäres Suchen | 130 |
Merge-Operationen | 132 |
Heap | 134 |
Min und Max | 136 |
Permutationen | 137 |
Numerik | 138 |
Kapitel 11 – Numerik | 141 |
Zufallszahlen | 141 |
Zufallszahlenerzeuger | 141 |
Zufallszahlenverteilung | 142 |
Numerische Funktionen von C | 145 |
Kapitel 12 – Strings | 147 |
Erzeugen und Löschen | 148 |
Konvertierungen zwischen C++-Strings und C-Strings | 150 |
size versus capacity | 151 |
Vergleiche | 152 |
Stringkonkatenation | 152 |
Elementzugriff | 153 |
Ein- und Ausgabe | 154 |
Suchen | 155 |
Modifizierende Operationen | 157 |
Numerische Konvertierungen | 159 |
Kapitel 13 – Reguläre Ausdrücke | 163 |
Zeichentypen | 164 |
Reguläre-Ausdrücke-Objekte | 164 |
Das Suchergebnis match_results | 165 |
std::sub_match | 167 |
Exakte Treffer | 169 |
Suchen | 169 |
Ersetzen | 170 |
Formatieren | 171 |
Wiederholtes Suchen | 172 |
std::regex_iterator | 172 |
std::regex_token_iterator | 173 |
Kapitel 14 – Ein- und Ausgabestreams | 175 |
Hierarchie | 175 |
Ein- und Ausgabefunktionen | 176 |
Eingabe | 178 |
Formatierte Eingabe | 178 |
Unformatierte Eingabe | 179 |
Ausgabe | 180 |
Formatangabe | 180 |
Streams | 183 |
Stringstreams | 183 |
Dateistreams | 185 |
Dateistreams: wahlfreier Zugriff | 187 |
Streamzustand | 188 |
Eigene Datentypen | 190 |
Kapitel 15 – Multithreading | 193 |
Das C++-Speichermodell | 193 |
Atomare Datentypen | 194 |
Threads | 195 |
Erzeugen eines Threads | 195 |
Lebenszeit eines Threads | 195 |
Datenübergabe an einen Thread | 197 |
Operationen auf Threads | 198 |
Gemeinsam von Threads genutzte Daten | 200 |
Kritischer Wettlauf | 200 |
Schutz der Daten mit Mutexen | 201 |
Verklemmung | 203 |
Locks | 204 |
std::lock_guard | 204 |
std::unique_lock | 204 |
Sichere Initialisierung der Daten | 206 |
Konstante Ausdrücke | 206 |
Statische Variablen mit Blockgültigkeit | 207 |
std::call_once und std::once_flag | 207 |
Thread-lokale Daten | 208 |
Bedingungsvariablen | 209 |
Tasks | 210 |
Thread versus Task | 211 |
std::async | 212 |
std::packaged_task | 214 |
std::promise und std::future | 215 |
Index | 219 |