Stroustrup | Die C++-Programmiersprache | E-Book | sack.de
E-Book

E-Book, Deutsch, 1467 Seiten

Stroustrup Die C++-Programmiersprache

aktuell zum C++11-Standard
1. Auflage 2015
ISBN: 978-3-446-43981-8
Verlag: Carl Hanser
Format: PDF
Kopierschutz: 1 - PDF Watermark

aktuell zum C++11-Standard

E-Book, Deutsch, 1467 Seiten

ISBN: 978-3-446-43981-8
Verlag: Carl Hanser
Format: PDF
Kopierschutz: 1 - PDF Watermark



DIE C++-PROGRAMMIERSPRACHE//
- C++11 - zugänglich für Programmierer, die von C++98 oder anderen Sprachen kommen, wobei die vorgestellten Einblicke und Techniken selbst C++11-Spitzenprogrammierer unverzichtbar finden werden.
- Referenz und Tutorial für Programmierer, die C++ möglichst effektiv einsetzen möchten.
- Der neue C++11-Standard ermöglicht es Programmierern, Ideen klarer, einfacher und direkter auszudrücken sowie schnelleren und effizienteren Code zu schreiben.
Die C++-Programmiersprache ist eine akkurate, ausführlich erläuterte und ganzheitliche Darstellung der vollständigen Sprache - mit all ihren Instrumenten, Abstraktionsmechanismen, Standardbibliotheken und wichtigsten Entwurfstechniken. Stroustrup präsentiert das ganze Buch hindurch knappe, 'reine C++11-Beispiele', die sowohl den Einsatz der Sprachmittel als auch den Programmentwurf anschaulich darstellen. Zum umfassenden Verständnis gibt der Autor zahlreiche Querverweise auf andere Stellen im Buch sowie auf den ISO-Standard an.
Neuigkeiten im Rahmen von C++11 sind
- Unterstützung für Nebenläufigkeit,
- reguläre Ausdrücke, Ressourcenverwaltungszeiger, Zufallszahlen und verbesserte Container,
- Allgemeine und einheitliche Initialisierung, vereinfachte for-Anweisungen, Verschiebesemantik und Unicode-Unterstützung,
- Lambda-Ausdrücke, allgemeine konstante Ausdrücke, Kontrolle über Standardwerte von Klassen, variadische Templates, Template-Alias und benutzerdefinierte Literale,
- Kompatibilitätsfragen.
AUS DEM INHALT //
Elementare Sprachmittel: Typ, Objekt, Gültigkeitsbereich, Speicherung, arithmetische Grundlagen und weitere // Modularität, die durch Namespaces, Quelldateien und Ausnahmenbehandlung unterstützt wird // C++-Abstraktion einschließlich Klassen, Klassenhierarchien und Templates für eine Synthese von herkömmlicher, objektorientierter und generischer Programmierung // Standardbibliothek: Container, Algorithmen, Iteratoren, Utilities, Strings, Stream-E/A, Locales, Numerik und weitere // Das grundlegende C++-Speichermodell im Detail
Stroustrup Die C++-Programmiersprache jetzt bestellen!

Weitere Infos & Material


1;Inhalt;6
2;Vorwort;32
3;Teil I Einführung;36
3.1;1 Vorbemerkungen;38
3.1.1;1.1?Zum Aufbau dieses Buchs;38
3.1.1.1;1.1.1?Einführung;39
3.1.1.2;1.1.2?Grundlegende Sprachmittel;39
3.1.1.3;1.1.3?Abstraktionsmechanismen;40
3.1.1.4;1.1.4?Die Standardbibliothek;42
3.1.1.5;1.1.5?Beispiele und Referenzen;43
3.1.2;1.2?Der Entwurf von C++;45
3.1.2.1;1.2.1?Programmierstile;47
3.1.2.2;1.2.2?Typprüfung;50
3.1.2.3;1.2.3?C-Kompatibilität;51
3.1.2.4;1.2.4?Sprache, Bibliotheken und Systeme;52
3.1.3;1.3?C++ lernen;54
3.1.3.1;1.3.1?In C++ programmieren;56
3.1.3.2;1.3.2?Ratschläge für C++-Programmierer;57
3.1.3.3;1.3.3?Ratschläge für C-Programmierer;58
3.1.3.4;1.3.4?Ratschläge für Java-Programmierer;59
3.1.4;1.4?Historische Anmerkungen;60
3.1.4.1;1.4.1?Chronik;61
3.1.4.2;1.4.2?Die frühen Jahre;62
3.1.4.2.1;1.4.2.1?Sprachfeatures und Bibliotheksinstrumente;63
3.1.4.3;1.4.3?Der 1998-Standard;65
3.1.4.3.1;1.4.3.1?Sprachfeatures;65
3.1.4.3.2;1.4.3.2?Die Standardbibliothek;66
3.1.4.4;1.4.4?Der 2011-Standard;67
3.1.4.4.1;1.4.4.1?Sprachfeatures;68
3.1.4.4.2;1.4.4.2?Standardbibliothek;69
3.1.4.5;1.4.5?Wofür wird C++ verwendet?;70
3.1.5;1.5?Ratschläge;72
3.1.6;1.6?Literaturhinweise;73
3.2;2 Ein Rundreise durch C++: Die Grundlagen;78
3.2.1;2.1?Einführung;78
3.2.2;2.2?Die Grundlagen;79
3.2.2.1;2.2.1?Hello, World!;79
3.2.2.2;2.2.2?Typen, Variablen und Arithmetik;81
3.2.2.3;2.2.3?Konstanten;83
3.2.2.4;2.2.4?Tests und Schleifen;84
3.2.2.5;2.2.5?Zeiger, Arrays und Schleifen;86
3.2.3;2.3?Benutzerdefinierte Typen;88
3.2.3.1;2.3.1?Strukturen;88
3.2.3.2;2.3.2?Klassen;90
3.2.3.3;2.3.3?Aufzählungen;92
3.2.4;2.4?Modularität;93
3.2.4.1;2.4.1?Separate Kompilierung;94
3.2.4.2;2.4.2?Namespaces;95
3.2.4.3;2.4.3?Fehlerbehandlung;96
3.2.4.3.1;2.4.3.1?Ausnahmen;97
3.2.4.3.2;2.4.3.2?Invarianten;98
3.2.4.3.3;2.4.3.3?Statische Assertionen;99
3.2.5;2.5?Nachbemerkung;100
3.2.6;2.6?Ratschläge;100
3.3;3 Eine Rundreise durch C++: Abstraktionsmechanismen;102
3.3.1;3.1?Einführung;102
3.3.2;3.2?Klassen;103
3.3.2.1;3.2.1?Konkrete Typen;103
3.3.2.1.1;3.2.1.1?Ein arithmetischer Typ;104
3.3.2.1.2;3.2.1.2?Ein Container;106
3.3.2.1.3;3.2.1.3?Container initialisieren;107
3.3.2.2;3.2.2?Abstrakte Typen;108
3.3.2.3;3.2.3?Virtuelle Funktionen;111
3.3.2.4;3.2.4?Klassenhierarchien;112
3.3.3;3.3?Kopieren und verschieben;116
3.3.3.1;3.3.1?Container kopieren;116
3.3.3.2;3.3.2?Container verschieben;118
3.3.3.3;3.3.3?Ressourcenverwaltung;120
3.3.3.4;3.3.4?Operationen unterdrücken;121
3.3.4;3.4?Templates;122
3.3.4.1;3.4.1?Parametrisierte Typen;122
3.3.4.2;3.4.2?Funktions-Templates;123
3.3.4.3;3.4.3?Funktionsobjekte;124
3.3.4.4;3.4.4?Variadische Templates;127
3.3.4.5;3.4.5?Alias;128
3.3.5;3.5?Ratschläge;129
3.4;4 Eine Rundreise durch C++: Container und Algorithmen;130
3.4.1;4.1?Bibliotheken;130
3.4.1.1;4.1.1?Überblick über die Standardbibliothek;131
3.4.1.2;4.1.2?Header und Namespace der Standardbibliothek;132
3.4.2;4.2?Strings;133
3.4.3;4.3?Stream-Ein-/Ausgabe;135
3.4.3.1;4.3.1?Ausgabe;135
3.4.3.2;4.3.2?Eingabe;136
3.4.3.3;4.3.3?Ein-/Ausgabe von benutzerdefinierten Typen;137
3.4.4;4.4?Container;139
3.4.4.1;4.4.1?vector;139
3.4.4.1.1;4.4.1.1?Elemente;141
3.4.4.1.2;4.4.1.2?Bereichsüberprüfung;141
3.4.4.2;4.4.2?list;142
3.4.4.3;4.4.3?map;144
3.4.4.4;4.4.4?unordered_map;145
3.4.4.5;4.4.5?Überblick über Container;145
3.4.5;4.5?Algorithmen;147
3.4.5.1;4.5.1?Iteratoren verwenden;148
3.4.5.2;4.5.2?Iteratortypen;150
3.4.5.3;4.5.3?Stream-Iteratoren;151
3.4.5.4;4.5.4?Prädikate;153
3.4.5.5;4.5.5?Überblick über Algorithmen;153
3.4.5.6;4.5.6?Containeralgorithmen;154
3.4.6;4.6?Ratschläge;155
3.5;5 Eine Rundreise durch C++: Nebenläufigkeit und Dienstprogramme;156
3.5.1;5.1?Einführung;156
3.5.2;5.2?Ressourcenverwaltung;156
3.5.2.1;5.2.1?unique_ptr und shared_ptr;157
3.5.3;5.3?Nebenläufigkeit;159
3.5.3.1;5.3.1?Tasks und Threads;160
3.5.3.2;5.3.2?Argumente übergeben;161
3.5.3.3;5.3.3?Ergebnisse zurückgeben;162
3.5.3.4;5.3.4?Daten gemeinsam nutzen;162
3.5.3.4.1;5.3.4.1?Warten auf Ereignisse;164
3.5.3.5;5.3.5?Kommunizierende Tasks;165
3.5.3.5.1;5.3.5.1?future und promise;166
3.5.3.5.2;5.3.5.2?packaged_task;167
3.5.3.5.3;5.3.5.3?async();168
3.5.4;5.4?Kleine Hilfskomponenten;169
3.5.4.1;5.4.1?Zeit;169
3.5.4.2;5.4.2?Typfunktionen;170
3.5.4.2.1;5.4.2.1?iterator_traits;170
3.5.4.2.2;5.4.2.2?Typprädikate;172
3.5.4.3;5.4.3?pair und tuple;173
3.5.5;5.5?Reguläre Ausdrücke;174
3.5.6;5.6?Mathematik;175
3.5.6.1;5.6.1?Mathematische Funktionen und Algorithmen;175
3.5.6.2;5.6.2?Komplexe Zahlen;175
3.5.6.3;5.6.3?Zufallszahlen;176
3.5.6.4;5.6.4?Vektorarithmetik;178
3.5.6.5;5.6.5?Numerische Grenzen;179
3.5.7;5.7?Ratschläge;179
4;Teil II Grundlegende Sprachelemente;180
4.1;6 Typen und Deklarationen;182
4.1.1;6.1?Der ISO-C++-Standard;182
4.1.1.1;6.1.1?Implementierungen;184
4.1.1.2;6.1.2?Der grundlegende Quellzeichensatz;184
4.1.2;6.2?Typen;185
4.1.2.1;6.2.1?Fundamentale Typen;185
4.1.2.2;6.2.2?Boolesche Typen;186
4.1.2.3;6.2.3?Zeichentypen;188
4.1.2.3.1;6.2.3.1?Vorzeichenbehaftete und vorzeichenlose Zeichen;190
4.1.2.3.2;6.2.3.2?Zeichenliterale;191
4.1.2.4;6.2.4?Ganzzahltypen;193
4.1.2.4.1;6.2.4.1?Ganzzahlliterale;193
4.1.2.4.2;6.2.4.2?Typen von Ganzzahlliteralen;194
4.1.2.5;6.2.5?Gleitkommatypen;195
4.1.2.5.1;6.2.5.1?Gleitkommaliterale;195
4.1.2.6;6.2.6?Präfixe und Suffixe;196
4.1.2.7;6.2.7?void;197
4.1.2.8;6.2.8?Größen;197
4.1.2.9;6.2.9?Ausrichtung;200
4.1.3;6.3?Deklarationen;201
4.1.3.1;6.3.1?Die Struktur von Deklarationen;203
4.1.3.2;6.3.2?Mehrere Namen deklarieren;204
4.1.3.3;6.3.3?Namen;205
4.1.3.3.1;6.3.3.1?Schlüsselwörter;206
4.1.3.4;6.3.4?Gültigkeitsbereiche;207
4.1.3.5;6.3.5?Initialisierung;209
4.1.3.5.1;6.3.5.1?Fehlende Initialisierer;212
4.1.3.5.2;6.3.5.2?Initialisierungslisten;213
4.1.3.6;6.3.6?Einen Typ herleiten: auto und decltype();214
4.1.3.6.1;6.3.6.1?Der Typspezifizierer auto;214
4.1.3.6.2;6.3.6.2?auto und {}-Listen;215
4.1.3.6.3;6.3.6.3?Der Spezifizierer decltype();216
4.1.4;6.4?Objekte und Werte;217
4.1.4.1;6.4.1?L-Werte und R-Werte;217
4.1.4.2;6.4.2?Lebensdauer von Objekten;218
4.1.5;6.5?Typalias;219
4.1.6;6.6?Ratschläge;220
4.2;7 Zeiger, Arrays und Referenzen;222
4.2.1;7.1?Einführung;222
4.2.2;7.2?Zeiger;222
4.2.2.1;7.2.1?void*;223
4.2.2.2;7.2.2?nullptr;224
4.2.3;7.3?Arrays;225
4.2.3.1;7.3.1?Array-Initialisierer;226
4.2.3.2;7.3.2?Stringliterale;227
4.2.3.2.1;7.3.2.1?Rohe Zeichen-Strings;229
4.2.3.2.2;7.3.2.2?Größere Zeichensätze;230
4.2.4;7.4?Zeiger auf Arrays;231
4.2.4.1;7.4.1?Navigieren in Arrays;233
4.2.4.2;7.4.2?Mehrdimensionale Arrays;235
4.2.4.3;7.4.3?Arrays übergeben;236
4.2.5;7.5?Zeiger und const;238
4.2.6;7.6?Zeiger und Besitz;240
4.2.7;7.7?Referenzen;241
4.2.7.1;7.7.1?L-Wert-Referenzen;243
4.2.7.2;7.7.2?R-Wert-Referenzen;246
4.2.7.3;7.7.3?Referenzen auf Referenzen;249
4.2.7.4;7.7.4?Zeiger und Referenzen;250
4.2.8;7.8?Ratschläge;252
4.3;8 Strukturen, Unions und Aufzählungen;254
4.3.1;8.1?Einführung;254
4.3.2;8.2?Strukturen;254
4.3.2.1;8.2.1?Layout einer Struktur;256
4.3.2.2;8.2.2?Namen von Strukturen;257
4.3.2.3;8.2.3?Strukturen und Klassen;259
4.3.2.4;8.2.4?Strukturen und Arrays;260
4.3.2.5;8.2.5?Typäquivalenz;262
4.3.2.6;8.2.6?Plain Old Data;263
4.3.2.7;8.2.7?Felder;265
4.3.3;8.3?Unions;266
4.3.3.1;8.3.1?Unions und Klassen;268
4.3.3.2;8.3.2?Anonyme Unions;269
4.3.4;8.4?Aufzählungen;272
4.3.4.1;8.4.1?Aufzählungsklassen;272
4.3.4.2;8.4.2?Einfache Aufzählungen;276
4.3.4.3;8.4.3?Unbenannte Aufzählungen;278
4.3.5;8.5?Ratschläge;278
4.4;9 Anweisungen;280
4.4.1;9.1?Einführung;280
4.4.2;9.2?Zusammenfassung der Anweisungen;280
4.4.3;9.3?Deklarationen als Anweisungen;282
4.4.4;9.4?Auswahlanweisungen;283
4.4.4.1;9.4.1?if-Anweisungen;283
4.4.4.2;9.4.2?switch-Anweisungen;285
4.4.4.2.1;9.4.2.1?Deklarationen in case-Zweigen;287
4.4.4.3;9.4.3?Deklarationen in Bedingungen;287
4.4.5;9.5?Schleifenanweisungen;288
4.4.5.1;9.5.1?Bereichsbasierte for-Anweisungen;289
4.4.5.2;9.5.2?for-Anweisungen;290
4.4.5.3;9.5.3?while-Anweisungen;291
4.4.5.4;9.5.4?do-Anweisungen;292
4.4.5.5;9.5.5?Schleifen verlassen;292
4.4.6;9.6?goto-Anweisungen;293
4.4.7;9.7?Kommentare und Einrückungen;294
4.4.8;9.8?Ratschläge;296
4.5;10 Ausdrücke;298
4.5.1;10.1?Einführung;298
4.5.2;10.2?Ein Taschenrechner;298
4.5.2.1;10.2.1?Der Parser;299
4.5.2.2;10.2.2?Eingabe;303
4.5.2.3;10.2.3?Low-level-Eingabe;307
4.5.2.4;10.2.4?Fehlerbehandlung;309
4.5.2.5;10.2.5?Das Rahmenprogramm;309
4.5.2.6;10.2.6?Header;310
4.5.2.7;10.2.7?Befehlszeilenargumente;311
4.5.2.8;10.2.8?Eine Anmerkung zum Stil;312
4.5.3;10.3?Zusammenfassung der Operatoren;313
4.5.3.1;10.3.1?Ergebnisse;317
4.5.3.2;10.3.2?Reihenfolge der Auswertung;318
4.5.3.3;10.3.3?Operatorrangfolge;319
4.5.3.4;10.3.4?Temporäre Objekte;320
4.5.4;10.4?Konstante Ausdrücke;322
4.5.4.1;10.4.1?Symbolische Konstanten;324
4.5.4.2;10.4.2?const-Typen in konstanten Ausdrücken;325
4.5.4.3;10.4.3?Literale Typen;325
4.5.4.4;10.4.4?Referenzargumente;326
4.5.4.5;10.4.5?Adresse konstanter Ausdrücke;327
4.5.5;10.5?Implizite Typkonvertierung;327
4.5.5.1;10.5.1?Heraufstufungen;328
4.5.5.2;10.5.2?Konvertierungen;328
4.5.5.2.1;10.5.2.1?Integrale Konvertierungen;329
4.5.5.2.2;10.5.2.2?Gleitkommakonvertierungen;329
4.5.5.2.3;10.5.2.3?Zeiger- und Referenzkonvertierungen;330
4.5.5.2.4;10.5.2.4?Zeiger-auf-Member-Konvertierungen;330
4.5.5.2.5;10.5.2.5?Boolesche Konvertierungen;330
4.5.5.2.6;10.5.2.6?Gleitkomma-Ganzzahl-Konvertierungen;331
4.5.5.3;10.5.3?Übliche arithmetische Konvertierungen;332
4.5.6;10.6?Ratschläge;332
4.6;11 Auswahloperationen;334
4.6.1;11.1?Diverse Operatoren;334
4.6.1.1;11.1.1?Logische Operatoren;334
4.6.1.2;11.1.2?Bitweise logische Operatoren;334
4.6.1.3;11.1.3?Bedingte Ausdrücke;336
4.6.1.4;11.1.4?Inkrementieren und Dekrementieren;336
4.6.2;11.2?Freispeicher;338
4.6.2.1;11.2.1?Speicherverwaltung;340
4.6.2.2;11.2.2?Arrays;343
4.6.2.3;11.2.3?Speicherplatz beschaffen;344
4.6.2.4;11.2.4?Überladen von new;345
4.6.2.4.1;11.2.4.1?nothrow new;347
4.6.3;11.3?Listen;348
4.6.3.1;11.3.1?Implementierungsmodell;348
4.6.3.2;11.3.2?Qualifizierte Listen;350
4.6.3.3;11.3.3?Unqualifizierte Listen;350
4.6.4;11.4?Lambda-Ausdrücke;352
4.6.4.1;11.4.1?Implementierungsmodelle;353
4.6.4.2;11.4.2?Alternativen für Lambda-Ausdrücke;354
4.6.4.3;11.4.3?Erfassung;356
4.6.4.3.1;11.4.3.1?Lambda und Lebensdauer;358
4.6.4.3.2;11.4.3.2?Namen von Namespaces;359
4.6.4.3.3;11.4.3.3?Lambda und this;359
4.6.4.3.4;11.4.3.4?Veränderbare Lambda-Ausdrücke;359
4.6.4.4;11.4.4?Aufruf und Rückgabe;360
4.6.4.5;11.4.5?Der Typ eines Lambda-Ausdrucks;360
4.6.5;11.5?Explizite Typumwandlung;361
4.6.5.1;11.5.1?Konstruktion;363
4.6.5.2;11.5.2?Benannte Typumwandlungen;364
4.6.5.3;11.5.3?C-Typumwandlungen;366
4.6.5.4;11.5.4?Funktionale Typumwandlung;366
4.6.6;11.6?Ratschläge;367
4.7;12 Funktionen;368
4.7.1;12.1?Funktionsdeklarationen;368
4.7.1.1;12.1.1?Warum Funktionen?;369
4.7.1.2;12.1.2?Bestandteile einer Funktionsdeklaration;369
4.7.1.3;12.1.3?Funktionsdefinitionen;370
4.7.1.4;12.1.4?Werte zurückgeben;372
4.7.1.5;12.1.5?Inline-Funktionen;374
4.7.1.6;12.1.6?constexpr-Funktionen;375
4.7.1.6.1;12.1.6.1?constexpr und Referenzen;376
4.7.1.6.2;12.1.6.2?Bedingte Auswertung;377
4.7.1.7;12.1.7?[[noreturn]]-Funktionen;377
4.7.1.8;12.1.8?Lokale Variablen;378
4.7.2;12.2?Argumentübergabe;379
4.7.2.1;12.2.1?Referenzargumente;380
4.7.2.2;12.2.2?Array-Argumente;382
4.7.2.3;12.2.3?Listenargumente;384
4.7.2.4;12.2.4?Nicht angegebene Anzahl von Argumenten;385
4.7.2.5;12.2.5?Standardargumente;389
4.7.3;12.3?Überladene Funktionen;391
4.7.3.1;12.3.1?Automatische Auflösung von Überladungen;391
4.7.3.2;12.3.2?Überladen und Rückgabetyp;393
4.7.3.3;12.3.3?Überladen und Gültigkeitsbereiche;394
4.7.3.4;12.3.4?Auflösung für mehrere Argumente;395
4.7.3.5;12.3.5?Manuelle Auflösung von Überladungen;395
4.7.4;12.4?Vor- und Nachbedingungen;396
4.7.5;12.5?Zeiger auf Funktion;398
4.7.6;12.6?Makros;402
4.7.6.1;12.6.1?Bedingte Übersetzung;405
4.7.6.2;12.6.2?Vordefinierte Makros;406
4.7.6.3;12.6.3?Pragmas;407
4.7.7;12.7?Ratschläge;407
4.8;13 Ausnahmenbehandlung;410
4.8.1;13.1?Fehlerbehandlung;410
4.8.1.1;13.1.1?Ausnahmen;411
4.8.1.2;13.1.2?Herkömmliche Fehlerbehandlung;413
4.8.1.3;13.1.3?Durchhangeln;414
4.8.1.4;13.1.4?Alternative Ansichten von Ausnahmen;415
4.8.1.4.1;13.1.4.1?Asynchrone Ereignisse;415
4.8.1.4.2;13.1.4.2?Ausnahmen, die keine Fehler sind;415
4.8.1.5;13.1.5?Wann Sie keine Ausnahmen verwenden können;416
4.8.1.6;13.1.6?Hierarchische Fehlerbehandlung;417
4.8.1.7;13.1.7?Ausnahmen und Effizienz;419
4.8.2;13.2?Ausnahmegarantien;421
4.8.3;13.3?Ressourcenverwaltung;423
4.8.3.1;13.3.1?finally;426
4.8.4;13.4?Invarianten erzwingen;428
4.8.5;13.5?Ausnahmen auslösen und abfangen;433
4.8.5.1;13.5.1?Ausnahmen auslösen;433
4.8.5.1.1;13.5.1.1?noexcept-Funktionen;435
4.8.5.1.2;13.5.1.2?Der Operator noexcept;435
4.8.5.1.3;13.5.1.3?Ausnahmespezifikationen;436
4.8.5.2;13.5.2?Ausnahmen abfangen;437
4.8.5.2.1;13.5.2.1?Ausnahmen erneut auslösen;438
4.8.5.2.2;13.5.2.2?Jede Ausnahme abfangen;439
4.8.5.2.3;13.5.2.3?Mehrere Handler;440
4.8.5.2.4;13.5.2.4?try-Blöcke in Funktionen;440
4.8.5.2.5;13.5.2.5?Beendigung;442
4.8.5.3;13.5.3?Ausnahmen und Threads;444
4.8.6;13.6?Eine vector-Implementierung;445
4.8.6.1;13.6.1?Ein einfacher vector;445
4.8.6.2;13.6.2?Speicher explizit darstellen;449
4.8.6.3;13.6.3?Zuweisung;452
4.8.6.4;13.6.4?Größe ändern;454
4.8.6.4.1;13.6.4.1?reserve();455
4.8.6.4.2;13.6.4.2?resize();456
4.8.6.4.3;13.6.4.3?push_back();456
4.8.6.4.4;13.6.4.4?Abschließende Gedanken;457
4.8.7;13.7?Ratschläge;458
4.9;14 Namespaces;460
4.9.1;14.1?Kompositionsprobleme;460
4.9.2;14.2?Namespaces;461
4.9.2.1;14.2.1?Explizite Qualifizierung;463
4.9.2.2;14.2.2?using-Deklarationen;464
4.9.2.3;14.2.3?using-Direktiven;465
4.9.2.4;14.2.4?Argumentabhängige Namensauflösung;466
4.9.2.5;14.2.5?Namespaces sind offen;469
4.9.3;14.3?Modularisierung und Schnittstellen;470
4.9.3.1;14.3.1?Namespaces als Module;471
4.9.3.2;14.3.2?Implementierungen;473
4.9.3.3;14.3.3?Schnittstellen und Implementierungen;475
4.9.4;14.4?Komposition mit Namespaces;477
4.9.4.1;14.4.1?Komfort vs. Sicherheit;477
4.9.4.2;14.4.2?Namespace-Alias;478
4.9.4.3;14.4.3?Namespaces zusammensetzen;479
4.9.4.4;14.4.4?Komposition und Auswahl;480
4.9.4.5;14.4.5?Namespaces und Überladen;481
4.9.4.6;14.4.6?Versionsverwaltung;483
4.9.4.7;14.4.7?Verschachtelte Namespaces;485
4.9.4.8;14.4.8?Unbenannte Namespaces;486
4.9.4.9;14.4.9?C-Header;487
4.9.5;14.5?Ratschläge;488
4.10;15 Quelldateien und Programme;490
4.10.1;15.1?Separate Übersetzung;490
4.10.2;15.2?Binden;491
4.10.2.1;15.2.1?Dateilokale Namen;494
4.10.2.2;15.2.2?Header-Dateien;495
4.10.2.3;15.2.3?Die Eine-Definition-Regel;497
4.10.2.4;15.2.4?Header der Standardbibliothek;499
4.10.2.5;15.2.5?Binden mit Nicht-C++-Code;500
4.10.2.6;15.2.6?Binden und Zeiger auf Funktionen;502
4.10.3;15.3?Header-Dateien verwenden;503
4.10.3.1;15.3.1?Organisation mit einzelnem Header;503
4.10.3.2;15.3.2?Organisation mit mehreren Header-Dateien;507
4.10.3.2.1;15.3.2.1?Andere Taschenrechnermodule;510
4.10.3.2.2;15.3.2.2?Header verwenden;512
4.10.3.3;15.3.3?Include-Wächter;513
4.10.4;15.4?Programme;514
4.10.4.1;15.4.1?Initialisierung von nichtlokalen Variablen;514
4.10.4.2;15.4.2?Initialisierung und Nebenläufigkeit;515
4.10.4.3;15.4.3?Programmbeendigung;516
4.10.5;15.5?Ratschläge;518
5;Teil III Abstraktionsmechanismen;520
5.1;16 Klassen;522
5.1.1;16.1?Einführung;522
5.1.2;16.2?Grundlagen von Klassen;523
5.1.2.1;16.2.1?Member-Funktionen;524
5.1.2.2;16.2.2?Standardmäßiges Kopieren;525
5.1.2.3;16.2.3?Zugriffskontrolle;526
5.1.2.4;16.2.4?class und struct;527
5.1.2.5;16.2.5?Konstruktoren;529
5.1.2.6;16.2.6?Explizite Konstruktoren;531
5.1.2.7;16.2.7?Klasseninterne Initialisierer;533
5.1.2.8;16.2.8?Klasseninterne Funktionsdefinitionen;534
5.1.2.9;16.2.9?Veränderlichkeit;535
5.1.2.9.1;16.2.9.1?Konstante Member-Funktionen;535
5.1.2.9.2;16.2.9.2?Physische und logische Konstanz;536
5.1.2.9.3;16.2.9.3?mutable;537
5.1.2.9.4;16.2.9.4?Veränderlichkeit über Indirektion;537
5.1.2.10;16.2.10?Selbstreferenz;538
5.1.2.11;16.2.11?Member-Zugriff;540
5.1.2.12;16.2.12?Statische Member;541
5.1.2.13;16.2.13?Member-Typen;543
5.1.3;16.3?Konkrete Klassen;544
5.1.3.1;16.3.1?Member-Funktionen;547
5.1.3.2;16.3.2?Hilfsfunktionen;550
5.1.3.3;16.3.3?Überladene Operatoren;551
5.1.3.4;16.3.4?Der Stellenwert von konkreten Klassen;552
5.1.4;16.4?Ratschläge;553
5.2;17 Konstruieren, Aufräumen, Kopieren und Verschieben;556
5.2.1;17.1?Einführung;556
5.2.2;17.2?Konstruktoren und Destruktoren;558
5.2.2.1;17.2.1?Konstruktoren und Invarianten;559
5.2.2.2;17.2.2?Destruktoren und Ressourcen;560
5.2.2.3;17.2.3?Basis- und Member-Destruktoren;561
5.2.2.4;17.2.4?Konstruktoren und Destruktoren aufrufen;562
5.2.2.5;17.2.5?Virtuelle Destruktoren;563
5.2.3;17.3?Initialisierung von Klassenobjekten;564
5.2.3.1;17.3.1?Initialisierung ohne Konstruktoren;564
5.2.3.2;17.3.2?Initialisierung mithilfe von Konstruktoren;566
5.2.3.2.1;17.3.2.1?Initialisierung durch Konstruktoren;568
5.2.3.3;17.3.3?Standardkonstruktoren;569
5.2.3.4;17.3.4?Initialisierungslisten-Konstruktoren;571
5.2.3.4.1;17.3.4.1?Mehrdeutigkeiten bei Initialisierungslisten-Konstruktoren auflösen;572
5.2.3.4.2;17.3.4.2?Initialisierungslisten verwenden;573
5.2.3.4.3;17.3.4.3?Direkte und Kopierinitialisierung;574
5.2.4;17.4 Initialisierung von Membern und Basisklassen;576
5.2.4.1;17.4.1?Member-Initialisierung;576
5.2.4.1.1;17.4.1.1?Member-Initialisierung und -Zuweisung;577
5.2.4.2;17.4.2?Basisklassen-Initialisierer;578
5.2.4.3;17.4.3?Konstruktoren delegieren;578
5.2.4.4;17.4.4?Klasseninterne Initialisierer;579
5.2.4.5;17.4.5?Initialisierer statischer Member;581
5.2.5;17.5?Kopieren und verschieben;582
5.2.5.1;17.5.1?Kopieren;583
5.2.5.1.1;17.5.1.1?Vorsicht vor Standardkonstruktoren;585
5.2.5.1.2;17.5.1.2?Kopieren von Basisklassen;585
5.2.5.1.3;17.5.1.3?Was Kopieren bedeutet;586
5.2.5.1.4;17.5.1.4?Slicing;589
5.2.5.2;17.5.2?Verschieben;590
5.2.6;17.6?Standardoperationen generieren;594
5.2.6.1;17.6.1?Explizite Standardoperationen;595
5.2.6.2;17.6.2?Standardoperationen;596
5.2.6.3;17.6.3?Standardoperationen verwenden;597
5.2.6.3.1;17.6.3.1?Standardkonstruktoren;597
5.2.6.3.2;17.6.3.2?Invarianten bewahren;597
5.2.6.3.3;17.6.3.3?Ressourceninvarianten;598
5.2.6.3.4;17.6.3.4?Partiell spezifizierte Invarianten;599
5.2.6.4;17.6.4?Gelöschte Funktionen;601
5.2.7;17.7?Ratschläge;603
5.3;18 Überladen von Operatoren;606
5.3.1;18.1?Einführung;606
5.3.2;18.2?Operatorfunktionen;608
5.3.2.1;18.2.1?Binäre und unäre Operatoren;609
5.3.2.2;18.2.2?Vordefinierte Bedeutungen für Operatoren;610
5.3.2.3;18.2.3?Operatoren und benutzerdefinierte Typen;611
5.3.2.4;18.2.4?Objekte übergeben;611
5.3.2.5;18.2.5?Operatoren in Namespaces;613
5.3.3;18.3?Ein Typ für komplexe Zahlen;615
5.3.3.1;18.3.1?Member- und Nicht-Member-Operatoren;615
5.3.3.2;18.3.2?Arithmetik mit gemischten Datentypen;616
5.3.3.3;18.3.3?Konvertierungen;617
5.3.3.3.1;18.3.3.1?Konvertierung von Operanden;619
5.3.3.4;18.3.4?Literale;620
5.3.3.5;18.3.5?Zugriffsfunktionen;621
5.3.3.6;18.3.6?Hilfsfunktionen;622
5.3.4;18.4?Typumwandlung;623
5.3.4.1;18.4.1?Konvertierungsoperatoren;623
5.3.4.2;18.4.2?Explizite Konvertierungsoperatoren;625
5.3.4.3;18.4.3?Mehrdeutigkeiten;626
5.3.5;18.5?Ratschläge;628
5.4;19 Spezielle Operatoren;630
5.4.1;19.1?Einführung;630
5.4.2;19.2?Spezielle Operatoren;630
5.4.2.1;19.2.1?Indizierung;630
5.4.2.2;19.2.2?Funktionsaufruf;631
5.4.2.3;19.2.3?Dereferenzieren;633
5.4.2.4;19.2.4?Inkrementieren und Dekrementieren;635
5.4.2.5;19.2.5?Allokation und Deallokation;637
5.4.2.6;19.2.6?Benutzerdefinierte Literale;639
5.4.3;19.3?Eine String-Klasse;642
5.4.3.1;19.3.1?Wesentliche Operationen;643
5.4.3.2;19.3.2?Zugriff auf Zeichen;643
5.4.3.3;19.3.3?Darstellung;644
5.4.3.3.1;19.3.3.1?Ergänzende Funktionen;646
5.4.3.4;19.3.4?Member-Funktionen;647
5.4.3.5;19.3.5?Hilfsfunktionen;650
5.4.3.6;19.3.6?Unsere String-Klasse verwenden;652
5.4.4;19.4?Friends;652
5.4.4.1;19.4.1?Friends finden;654
5.4.4.2;19.4.2?Friends und Member;655
5.4.5;19.5?Ratschläge;657
5.5;20 Abgeleitete Klassen;660
5.5.1;20.1?Einführung;660
5.5.2;20.2?Abgeleitete Klassen;661
5.5.2.1;20.2.1?Member-Funktionen;664
5.5.2.2;20.2.2?Konstruktoren und Destruktoren;665
5.5.3;20.3?Klassenhierarchien;666
5.5.3.1;20.3.1?Typfelder;666
5.5.3.2;20.3.2?Virtuelle Funktionen;669
5.5.3.3;20.3.3?Explizite Qualifizierung;672
5.5.3.4;20.3.4?Überschreiben steuern;672
5.5.3.4.1;20.3.4.1?override;674
5.5.3.4.2;20.3.4.2?final;675
5.5.3.5;20.3.5?Member der Basisklasse verwenden;677
5.5.3.5.1;20.3.5.1?Konstruktoren vererben;678
5.5.3.6;20.3.6?Lockerung bei Rückgabetypen;680
5.5.4;20.4?Abstrakte Klassen;682
5.5.5;20.5?Zugriffskontrolle;684
5.5.5.1;20.5.1?Geschützte Member;688
5.5.5.1.1;20.5.1.1?Geschützte Member verwenden;689
5.5.5.2;20.5.2?Zugriff auf Basisklassen;689
5.5.5.2.1;20.5.2.1?Mehrfachvererbung und Zugriffskontrolle;690
5.5.5.3;20.5.3?using-Deklarationen und Zugriffskontrolle;691
5.5.6;20.6?Zeiger auf Member;692
5.5.6.1;20.6.1?Zeiger auf Funktions-Member;692
5.5.6.2;20.6.2?Zeiger auf Daten-Member;694
5.5.6.3;20.6.3?Basis- und abgeleitete Member;695
5.5.7;20.7?Ratschläge;696
5.6;21 Klassenhierarchien;698
5.6.1;21.1?Einführung;698
5.6.2;21.2?Klassenhierarchien entwerfen;698
5.6.2.1;21.2.1?Implementierungsvererbung;699
5.6.2.1.1;21.2.1.1?Kritische Betrachtungen;702
5.6.2.2;21.2.2?Schnittstellenvererbung;703
5.6.2.3;21.2.3?Alternative Implementierungen;705
5.6.2.3.1;21.2.3.1?Kritische Betrachtungen;708
5.6.2.4;21.2.4?Objekterstellung örtlich begrenzen;709
5.6.3;21.3?Mehrfachvererbung;710
5.6.3.1;21.3.1?Mehrfachschnittstellen;711
5.6.3.2;21.3.2?Mehrere Implementierungsklassen;711
5.6.3.3;21.3.3?Auflösung von Mehrdeutigkeiten;713
5.6.3.4;21.3.4?Eine Basisklasse wiederholt verwenden;717
5.6.3.5;21.3.5?Virtuelle Basisklassen;718
5.6.3.5.1;21.3.5.1?Virtuelle Basisklassen konstruieren;721
5.6.3.5.2;21.3.5.2?Member einer virtuellen Klasse nur einmal aufrufen;722
5.6.3.6;21.3.6?Replizierte und virtuelle Basisklassen;724
5.6.3.6.1;21.3.6.1?Funktionen virtueller Basisklassen überschreiben;726
5.6.4;21.4?Ratschläge;727
5.7;22 Laufzeit-Typinformationen;728
5.7.1;22.1?Einführung;728
5.7.2;22.2?Navigation in der Klassenhierarchie;728
5.7.2.1;22.2.1?dynamic_cast;730
5.7.2.1.1;22.2.1.1?dynamic_cast in Referenz;732
5.7.2.2;22.2.2?Mehrfachvererbung;733
5.7.2.3;22.2.3?static_cast und dynamic_cast;735
5.7.2.4;22.2.4?Eine Schnittstelle zurückgewinnen;736
5.7.3;22.3?Doppelte Bindung und Besucher;740
5.7.3.1;22.3.1?Doppelte Bindung;741
5.7.3.2;22.3.2?Besucher;743
5.7.4;22.4?Konstruktion und Destruktion;745
5.7.5;22.5?Typidentifizierung;746
5.7.5.1;22.5.1?Erweiterte Typinformationen;748
5.7.6;22.6?RTTI – richtig und falsch eingesetzt;749
5.7.7;22.7?Ratschläge;751
5.8;23 Templates;754
5.8.1;23.1?Einführung und Überblick;754
5.8.2;23.2?Ein einfaches String-Template;757
5.8.2.1;23.2.1?Ein Template definieren;759
5.8.2.2;23.2.2?Template-Instanziierung;760
5.8.3;23.3?Typprüfung;761
5.8.3.1;23.3.1?Typäquivalenz;763
5.8.3.2;23.3.2?Fehlererkennung;764
5.8.4;23.4?Member von Klassen-Templates;765
5.8.4.1;23.4.1?Daten-Member;765
5.8.4.2;23.4.2?Member-Funktionen;766
5.8.4.3;23.4.3?Member-Typalias;766
5.8.4.4;23.4.4?Statische Member;767
5.8.4.5;23.4.5?Member-Typen;767
5.8.4.6;23.4.6?Member-Templates;768
5.8.4.6.1;23.4.6.1?Templates und Konstruktoren;769
5.8.4.6.2;23.4.6.2?Templates und virtual;770
5.8.4.6.3;23.4.6.3?Verschachtelungen;770
5.8.4.7;23.4.7?Friends;773
5.8.5;23.5?Funktions-Templates;774
5.8.5.1;23.5.1?Argumente von Funktions-Templates;776
5.8.5.2;23.5.2?Funktions-Template-Argumente herleiten;777
5.8.5.2.1;23.5.2.1?Referenzherleitung;778
5.8.5.3;23.5.3?Überladen von Funktions-Templates;780
5.8.5.3.1;23.5.3.1?Mehrdeutigkeiten auflösen;781
5.8.5.3.2;23.5.3.2?Fehler bei Argumentersetzung;782
5.8.5.3.3;23.5.3.3?Überladen und Ableitung;784
5.8.5.3.4;23.5.3.4?Überladen und nicht hergeleitete Parameter;784
5.8.6;23.6?Template-Alias;785
5.8.7;23.7?Quellcodeorganisation;786
5.8.7.1;23.7.1?Binden;788
5.8.8;23.8?Ratschläge;789
5.9;24 Generische Programmierung;792
5.9.1;24.1?Einführung;792
5.9.2;24.2?Algorithmen und Lifting;793
5.9.3;24.3?Konzepte;797
5.9.3.1;24.3.1?Ein Konzept erkennen;798
5.9.3.2;24.3.2?Konzepte und Einschränkungen;801
5.9.4;24.4?Konzepte konkret machen;803
5.9.4.1;24.4.1?Axiome;807
5.9.4.2;24.4.2?Konzepte mit mehreren Argumenten;808
5.9.4.3;24.4.3?Wertkonzepte;810
5.9.4.4;24.4.4?Einschränkungsüberprüfungen;810
5.9.4.5;24.4.5?Überprüfung von Template-Definitionen;812
5.9.5;24.5?Ratschläge;814
5.10;25 Spezialisierung;816
5.10.1;25.1?Einführung;816
5.10.2;25.2?Template-Parameter und -Argumente;817
5.10.2.1;25.2.1?Typen als Argumente;817
5.10.2.2;25.2.2?Werte als Argumente;819
5.10.2.3;25.2.3?Operationen als Argumente;821
5.10.2.4;25.2.4?Templates als Argumente;823
5.10.2.5;25.2.5?Template-Standardargumente;824
5.10.2.5.1;25.2.5.1?Standardargumente bei Funktions-Templates;825
5.10.3;25.3?Spezialisierung;826
5.10.3.1;25.3.1?Schnittstellenspezialisierung;829
5.10.3.1.1;25.3.1.1?Implementierungsspezialisierung;830
5.10.3.2;25.3.2?Das primäre Template;830
5.10.3.3;25.3.3?Reihenfolge der Spezialisierung;832
5.10.3.4;25.3.4?Funktions-Template-Spezialisierung;833
5.10.3.4.1;25.3.4.1?Spezialisierung und Überladen;833
5.10.3.4.2;25.3.4.2?Spezialisierung, die kein Überladen ist;834
5.10.4;25.4?Ratschläge;835
5.11;26 Instanziierung;836
5.11.1;26.1?Einführung;836
5.11.2;26.2?Template-Instanziierung;837
5.11.2.1;26.2.1?Wann wird Instanziierung gebraucht?;838
5.11.2.2;26.2.2?Manuelle Kontrolle der Instanziierung;839
5.11.3;26.3?Namensbindung;840
5.11.3.1;26.3.1?Abhängige Namen;842
5.11.3.2;26.3.2?Bindung am Punkt der Definition;844
5.11.3.3;26.3.3?Bindung am Punkt der Instanziierung;845
5.11.3.4;26.3.4?Mehrere Punkte der Instanziierung;847
5.11.3.5;26.3.5?Templates und Namespaces;849
5.11.3.6;26.3.6?Zu aggressive ADL;850
5.11.3.7;26.3.7?Namen aus Basisklassen;852
5.11.4;26.4?Ratschläge;854
5.12;27 Templates und Hierarchien;856
5.12.1;27.1?Einführung;856
5.12.2;27.2?Parametrisierung und Hierarchie;857
5.12.2.1;27.2.1?Generierte Typen;859
5.12.2.2;27.2.2?Template-Konvertierungen;861
5.12.3;27.3?Hierarchien von Klassen-Templates;862
5.12.3.1;27.3.1?Templates als Schnittstellen;864
5.12.4;27.4?Template-Parameter als Basisklassen;864
5.12.4.1;27.4.1?Datenstrukturen zusammensetzen;865
5.12.4.2;27.4.2?Klassenhierarchien linearisieren;869
5.12.5;27.5?Ratschläge;874
5.13;28 Metaprogrammierung;876
5.13.1;28.1?Einführung;876
5.13.2;28.2?Typfunktionen;878
5.13.2.1;28.2.1?Typalias;881
5.13.2.1.1;28.2.1.1?Wann man keinen Alias verwendet;882
5.13.2.2;28.2.2?Typprädikate;883
5.13.2.3;28.2.3?Eine Funktion auswählen;885
5.13.2.4;28.2.4?Traits;885
5.13.3;28.3?Steuerungsstrukturen;887
5.13.3.1;28.3.1?Auswahl;887
5.13.3.1.1;28.3.1.1?Zwischen zwei Typen auswählen;888
5.13.3.1.2;28.3.1.2?Übersetzungszeit versus Laufzeit;888
5.13.3.1.3;28.3.1.3?Zwischen mehreren Typen auswählen;890
5.13.3.2;28.3.2?Iteration und Rekursion;891
5.13.3.2.1;28.3.2.1?Rekursion mit Klassen;892
5.13.3.3;28.3.3?Wann man Metaprogrammierung verwendet;892
5.13.4;28.4?Bedingte Definition: Enable_if;894
5.13.4.1;28.4.1?Enable_if verwenden;895
5.13.4.2;28.4.2?Enable_if implementieren;897
5.13.4.3;28.4.3?Enable_if und Konzepte;898
5.13.4.4;28.4.4?Weitere Beispiele mit Enable_if;898
5.13.5;28.5?Eine Liste zur Übersetzungszeit: Tuple;901
5.13.5.1;28.5.1?Eine einfache Ausgabefunktion;903
5.13.5.2;28.5.2?Elementzugriff;904
5.13.5.2.1;28.5.2.1?Konstante Tupel;906
5.13.5.3;28.5.3?make_tuple;907
5.13.6;28.6?Variadische Templates;908
5.13.6.1;28.6.1?Eine typsichere printf()-Funktion;908
5.13.6.2;28.6.2?Technische Details;911
5.13.6.3;28.6.3?Weiterleitung;913
5.13.6.4;28.6.4?Der Typ tuple der Standardbibliothek;914
5.13.7;28.7?Beispiel: SI-Einheiten;918
5.13.7.1;28.7.1?Einheiten;918
5.13.7.2;28.7.2?Größen;919
5.13.7.3;28.7.3?Literale für Einheiten;921
5.13.7.4;28.7.4?Hilfsfunktionen;923
5.13.8;28.8?Ratschläge;924
5.14;29 Ein Matrix-Design;926
5.14.1;29.1?Einführung;926
5.14.1.1;29.1.1?Einfache Anwendungen von Matrix;926
5.14.1.2;29.1.2?Anforderungen an Matrix;928
5.14.2;29.2?Ein Matrix-Template;929
5.14.2.1;29.2.1?Konstruktion und Zuweisung;931
5.14.2.2;29.2.2?Indizierung und Slicing;932
5.14.3;29.3?Arithmetische Matrix-Operationen;935
5.14.3.1;29.3.1?Skalaroperationen;936
5.14.3.2;29.3.2?Addition;936
5.14.3.3;29.3.3?Multiplikation;938
5.14.4;29.4?Matrix-Implementierung;940
5.14.4.1;29.4.1?slice();940
5.14.4.2;29.4.2?Matrix-Slices;940
5.14.4.3;29.4.3?Matrix_ref;942
5.14.4.4;29.4.4?Matrix-Listeninitialisierung;943
5.14.4.5;29.4.5?Matrix-Zugriff;945
5.14.4.6;29.4.6?Nulldimensionale Matrix;948
5.14.5;29.5?Lineare Gleichungen lösen;949
5.14.5.1;29.5.1?Das klassische gaußsche Eliminationsverfahren;950
5.14.5.2;29.5.2?Pivotisierung;951
5.14.5.3;29.5.3?Testen;952
5.14.5.4;29.5.4?Verschmolzene Operationen;953
5.14.6;29.6?Ratschläge;956
6;Teil IVDie Standardbibliothek;958
6.1;30 Überblick über die Standardbibliothek;960
6.1.1;30.1?Einführung;960
6.1.1.1;30.1.1?Komponenten der Standardbibliothek;961
6.1.1.2;30.1.2?Designeinschränkungen;962
6.1.1.3;30.1.3?Beschreibungsstil;964
6.1.2;30.2?Header;964
6.1.3;30.3?Sprachunterstützung;969
6.1.3.1;30.3.1?Unterstützung für Initialisierungslisten;969
6.1.3.2;30.3.2?Unterstützung für bereichsbasierte for-Anweisung;970
6.1.4;30.4?Fehlerbehandlung;970
6.1.4.1;30.4.1?Ausnahmen;971
6.1.4.1.1;30.4.1.1?Die Hierarchie der Standardausnahmen;972
6.1.4.1.2;30.4.1.2?Weiterleitung von Ausnahmen;973
6.1.4.1.3;30.4.1.3?terminate();976
6.1.4.2;30.4.2?Assertionen;976
6.1.4.3;30.4.3?system_error;977
6.1.4.3.1;30.4.3.1?Fehlercodes;978
6.1.4.3.2;30.4.3.2?Fehlerkategorien;980
6.1.4.3.3;30.4.3.3?system_error-Ausnahme;981
6.1.4.3.4;30.4.3.4?Potenziell portable Fehlerbedingungen;982
6.1.4.3.5;30.4.3.5?Fehlercodes zuordnen;982
6.1.4.3.6;30.4.3.6?errc-Fehlercodes;984
6.1.4.3.7;30.4.3.7?future_errc-Fehlercodes;987
6.1.4.3.8;30.4.3.8?io_errc-Fehlercodes;987
6.1.5;30.5?Ratschläge;987
6.2;31 STL-Container;990
6.2.1;31.1?Einführung;990
6.2.2;31.2?Überblick über Container;990
6.2.2.1;31.2.1?Containerdarstellung;993
6.2.2.2;31.2.2?Anforderungen an die Elemente;995
6.2.2.2.1;31.2.2.1?Vergleiche;996
6.2.2.2.2;31.2.2.2?Andere relationale Operatoren;997
6.2.3;31.3?Operatoren im Überblick;998
6.2.3.1;31.3.1?Member-Typen;1001
6.2.3.2;31.3.2?Konstruktoren, Destruktor und Zuweisungen;1002
6.2.3.3;31.3.3?Größe und Kapazität;1004
6.2.3.4;31.3.4?Iteratoren;1004
6.2.3.5;31.3.5?Elementzugriff;1006
6.2.3.6;31.3.6?Stack-Operationen;1006
6.2.3.7;31.3.7?Listenoperationen;1007
6.2.3.8;31.3.8?Andere Operationen;1008
6.2.4;31.4?Container;1009
6.2.4.1;31.4.1?vector;1009
6.2.4.1.1;31.4.1.1?vector und Wachstum;1009
6.2.4.1.2;31.4.1.2?vector und Verschachtelung;1011
6.2.4.1.3;31.4.1.3?vector und Arrays;1013
6.2.4.1.4;31.4.1.4?vector und string;1013
6.2.4.2;31.4.2?Listen;1014
6.2.4.3;31.4.3?Assoziative Container;1016
6.2.4.3.1;31.4.3.1?Geordnete assoziative Container;1017
6.2.4.3.2;31.4.3.2?Ungeordnete assoziative Container;1021
6.2.4.3.3;31.4.3.3?Ungeordnete Maps konstruieren;1022
6.2.4.3.4;31.4.3.4?Hash- und Gleichheitsfunktionen;1024
6.2.4.3.5;31.4.3.5?Lastfaktor und Buckets;1027
6.2.5;31.5?Containeradapter;1028
6.2.5.1;31.5.1?stack;1029
6.2.5.2;31.5.2?queue;1031
6.2.5.3;31.5.3?priority_queue;1031
6.2.6;31.6?Ratschläge;1032
6.3;32 STL-Algorithmen;1036
6.3.1;32.1?Einführung;1036
6.3.2;32.2?Algorithmen;1036
6.3.2.1;32.2.1?Sequenzen;1037
6.3.3;32.3?Richtlinienargumente;1038
6.3.3.1;32.3.1?Komplexität;1040
6.3.4;32.4 Nichtmodifizierende Sequenzalgorithmen;1041
6.3.4.1;32.4.1?for_each();1041
6.3.4.2;32.4.2?Sequenzprädikate;1041
6.3.4.3;32.4.3?count();1042
6.3.4.4;32.4.4?find();1042
6.3.4.5;32.4.5?equal() und mismatch();1043
6.3.4.6;32.4.6?search();1044
6.3.5;32.5?Modifizierende Sequenzalgorithmen;1045
6.3.5.1;32.5.1?copy();1046
6.3.5.2;32.5.2?unique();1047
6.3.5.3;32.5.3?remove(), reverse() und replace();1048
6.3.5.4;32.5.4?rotate(), random_shuffle() und partition();1049
6.3.5.5;32.5.5?Permutationen;1050
6.3.5.6;32.5.6?fill();1051
6.3.5.7;32.5.7?swap();1052
6.3.6;32.6?Sortieren und Suchen;1053
6.3.6.1;32.6.1?Binäre Suche;1056
6.3.6.2;32.6.2?merge();1057
6.3.6.3;32.6.3?Mengenalgorithmen;1058
6.3.6.4;32.6.4?Heaps;1059
6.3.6.5;32.6.5?lexicographical_compare();1061
6.3.7;32.7?Minimum und Maximum;1061
6.3.8;32.8?Ratschläge;1063
6.4;33 STL-Iteratoren;1064
6.4.1;33.1?Einführung;1064
6.4.1.1;33.1.1?Iteratormodell;1064
6.4.1.2;33.1.2?Iteratorkategorien;1066
6.4.1.3;33.1.3?Iterator-Traits;1067
6.4.1.4;33.1.4?Iteratoroperationen;1070
6.4.2;33.2?Iteratoradapter;1071
6.4.2.1;33.2.1?Reverse-Iteratoren;1071
6.4.2.2;33.2.2?Einfügeiteratoren;1074
6.4.2.3;33.2.3?Verschiebeiteratoren;1075
6.4.3;33.3?Bereichszugriffsfunktionen;1076
6.4.4;33.4?Funktionsobjekte;1077
6.4.5;33.5?Funktionsadapter;1078
6.4.5.1;33.5.1?bind();1079
6.4.5.2;33.5.2?mem_fn();1081
6.4.5.3;33.5.3?function;1081
6.4.6;33.6?Ratschläge;1084
6.5;34 Speicher und Ressourcen;1086
6.5.1;34.1?Einführung;1086
6.5.2;34.2?„Beinahe-Container“;1086
6.5.2.1;34.2.1?array;1087
6.5.2.2;34.2.2?bitset;1090
6.5.2.2.1;34.2.2.1?Konstruktoren;1091
6.5.2.2.2;34.2.2.2?bitset-Operationen;1093
6.5.2.3;34.2.3?vector



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.