Eine Tour durch C++ Der praktische Leitfaden für modernes C++.Übersetzung der 3. Auflage
Dieses Buch bietet erfahrenen Programmierern einen praktischen Überblick über C++20 nach ISO-Standard und damit ein klares Verständnis für den Einsatz von modernem C++. Anhand vieler Codebeispiele und hilfreicher Praxistipps wird ein Großteil der Hauptfeatures der Sprache sowie der Standardbibli...
Autor principal: | |
---|---|
Formato: | Libro electrónico |
Idioma: | Alemán |
Publicado: |
Frechen :
mitp
2023.
|
Edición: | 1st ed |
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009755239106719 |
Tabla de Contenidos:
- Intro
- Impressum
- Einleitung
- Danksagungen
- Über die Fachkorrektoren der deutschen Ausgabe
- Kapitel 1: Die Grundlagen
- 1.1 Einführung
- 1.2 Programme
- 1.2.1 Hello, World!
- 1.3 Funktionen
- 1.4 Typen, Variablen und Arithmetik
- 1.4.1 Rechenoperatoren
- 1.4.2 Initialisierung
- 1.5 Gültigkeitsbereich und Lebensdauer
- 1.6 Konstanten
- 1.7 Zeiger, Arrays und Referenzen
- 1.7.1 Der Null-Pointer
- 1.8 Bedingungen prüfen
- 1.9 Auf Hardware abbilden
- 1.9.1 Zuweisung
- 1.9.2 Initialisierung
- 1.10 Ratschläge
- Kapitel 2: Benutzerdefinierte Typen
- 2.1 Einführung
- 2.2 Strukturen
- 2.3 Klassen
- 2.4 Aufzählungen
- 2.5 Unions
- 2.6 Ratschläge
- Kapitel 3: Modularität
- 3.1 Einführung
- 3.2 Separates Kompilieren
- 3.2.1 Header-Dateien
- 3.2.2 Module
- 3.3 Namensräume
- 3.4 Funktionsargumente und Rückgabewerte
- 3.4.1 Argumentübergabe
- 3.4.2 Werterückgabe
- 3.4.3 Rückgabetyp ableiten
- 3.4.4 Suffix-Rückgabetyp
- 3.4.5 Strukturierte Bindung
- 3.5 Ratschläge
- Kapitel 4: Fehlerbehandlung
- 4.1 Einführung
- 4.2 Exceptions
- 4.3 Invarianten
- 4.4 Alternativen für die Fehlerbehandlung
- 4.5 Assertions
- 4.5.1 assert()
- 4.5.2 Statische Assertionen
- 4.5.3 noexcept
- 4.6 Ratschläge
- Kapitel 5: Klassen
- 5.1 Einführung
- 5.1.1 Klassen
- 5.2 Konkrete Typen
- 5.2.1 Ein arithmetischer Typ
- 5.2.2 Ein Container
- 5.2.3 Container initialisieren
- 5.3 Abstrakte Typen
- 5.4 Virtuelle Funktionen
- 5.5 Klassenhierarchien
- 5.5.1 Vorteile von Hierarchien
- 5.5.2 Die Navigation in einer Hierarchie
- 5.5.3 Ressourcenlecks vermeiden
- 5.6 Ratschläge
- Kapitel 6: Notwendige Operationen
- 6.1 Einführung
- 6.1.1 Notwendige Operationen
- 6.1.2 Konvertierungen
- 6.1.3 Member-Initialisierer
- 6.2 Kopieren und Verschieben
- 6.2.1 Container kopieren
- 6.2.2 Container verschieben.
- 6.3 Ressourcenverwaltung
- 6.4 Operatoren überladen
- 6.5 Konventionelle Operationen
- 6.5.1 Vergleiche (Relationale Operatoren)
- 6.5.2 Container-Operationen
- 6.5.3 Iteratoren und »smarte Zeiger«
- 6.5.4 Eingabe- und Ausgabeoperationen
- 6.5.5 swap()
- 6.5.6 hash<
- >
- 6.6 Benutzerdefinierte Literale
- 6.7 Ratschläge
- Kapitel 7: Templates
- 7.1 Einführung
- 7.2 Parametrisierte Typen
- 7.2.1 Beschränkte Template-Argumente
- 7.2.2 Wert-Template-Argumente
- 7.2.3 Deduktion von Template-Argumenten
- 7.3 Parametrisierte Operationen
- 7.3.1 Funktions-Templates
- 7.3.2 Funktionsobjekte
- 7.3.3 Lambda-Ausdrücke
- 7.4 Template-Mechanismen
- 7.4.1 Variablen-Templates
- 7.4.2 Aliasse
- 7.4.3 Compile-Zeit-if
- 7.5 Ratschläge
- Kapitel 8: Konzepte und generische Programmierung
- 8.1 Einführung
- 8.2 Konzepte
- 8.2.1 Verwendung von Konzepten
- 8.2.2 Konzeptbasiertes Überladen
- 8.2.3 Gültiger Code
- 8.2.4 Definition von Konzepten
- 8.2.5 Konzepte und auto
- 8.2.6 Konzepte und Typen
- 8.3 Generische Programmierung
- 8.3.1 Verwendung von Konzepten
- 8.3.2 Abstraktion mittels Templates
- 8.4 Variadische Templates
- 8.4.1 Fold-Ausdrücke
- 8.4.2 Argumente weitergeben
- 8.5 Modell der Template-Kompilierung
- 8.6 Ratschläge
- Kapitel 9: Überblick über die Bibliothek
- 9.1 Einführung
- 9.2 Komponenten der Standardbibliothek
- 9.3 Organisation der Standardbibliothek
- 9.3.1 Namensräume
- 9.3.2 Der Namensraum ranges
- 9.3.3 Module
- 9.3.4 Header
- 9.4 Ratschläge
- Kapitel 10: Strings und reguläre Ausdrücke
- 10.1 Einführung
- 10.2 Strings
- 10.2.1 Die Implementierung von string
- 10.3 String-Views
- 10.4 Reguläre Ausdrücke
- 10.4.1 Suche
- 10.4.2 Notation regulärer Ausdrücke
- 10.4.3 Iteratoren
- 10.5 Ratschläge
- Kapitel 11: Eingabe und Ausgabe
- 11.1 Einführung
- 11.2 Ausgabe
- 11.3 Eingabe.
- 11.4 I/O-Status
- 11.5 Ein-/Ausgabe benutzerdefinierter Typen
- 11.6 Ausgabeformatierung
- 11.6.1 Stream-Formatierung
- 11.6.2 Formatierung im printf()-Stil
- 11.7 Streams
- 11.7.1 Standard-Streams
- 11.7.2 Datei-Streams
- 11.7.3 String-Streams
- 11.7.4 Speicher-Streams
- 11.7.5 Synchronisierte Streams
- 11.8 Ein-/Ausgaben im C-Stil
- 11.9 Dateisystem
- 11.9.1 Pfade
- 11.9.2 Dateien und Verzeichnisse
- 11.10 Ratschläge
- Kapitel 12: Container
- 12.1 Einführung
- 12.2 vector
- 12.2.1 Elemente
- 12.2.2 Bereichsüberprüfung
- 12.3 list
- 12.4 forward_list
- 12.5 map
- 12.6 unordered_map
- 12.7 Allokatoren
- 12.8 Ein Überblick über Container
- 12.9 Ratschläge
- Kapitel 13: Algorithmen
- 13.1 Einführung
- 13.2 Verwendung von Iteratoren
- 13.3 Iterator-Typen
- 13.3.1 Stream-Iteratoren
- 13.4 Verwendung von Prädikaten
- 13.5 Überblick über Algorithmen
- 13.6 Parallele Algorithmen
- 13.7 Ratschläge
- Kapitel 14: Bereiche (Ranges)
- 14.1 Einführung
- 14.2 Views
- 14.3 Generatoren
- 14.4 Pipelines
- 14.5 Überblick über Konzepte
- 14.5.1 Typkonzepte
- 14.5.2 Iterator-Konzepte
- 14.5.3 Bereichskonzepte
- 14.6 Ratschläge
- Kapitel 15: Zeiger und Container
- 15.1 Einführung
- 15.2 Zeiger
- 15.2.1 unique_ptr und shared_ptr
- 15.2.2 span
- 15.3 Container
- 15.3.1 array
- 15.3.2 bitset
- 15.3.3 pair
- 15.3.4 tuple
- 15.4 Alternativen
- 15.4.1 variant
- 15.4.2 optional
- 15.4.3 any
- 15.5 Ratschläge
- Kapitel 16: Utilities
- 16.1 Einführung
- 16.2 Zeit
- 16.2.1 Uhren
- 16.2.2 Kalender
- 16.2.3 Zeitzonen
- 16.3 Funktionsanpassung
- 16.3.1 Lambdas als Adapter
- 16.3.2 mem_fn()
- 16.3.3 function
- 16.4 Typfunktionen
- 16.4.1 Typprädikate
- 16.4.2 Bedingte Eigenschaften
- 16.4.3 Typgeneratoren
- 16.4.4 Assoziierte Typen
- 16.5 source_location
- 16.6 move() und forward()
- 16.7 Bitmanipulation.
- 16.8 Ein Programm beenden
- 16.9 Ratschläge
- Kapitel 17: Numerik
- 17.1 Einführung
- 17.2 Mathematische Funktionen
- 17.3 Numerische Algorithmen
- 17.3.1 Parallele numerische Algorithmen
- 17.4 Komplexe Zahlen
- 17.5 Zufallszahlen
- 17.6 Vektorarithmetik
- 17.7 Numerische Grenzen
- 17.8 Typ-Aliasse
- 17.9 Mathematische Konstanten
- 17.10 Ratschläge
- Kapitel 18: Nebenläufigkeit
- 18.1 Einführung
- 18.2 Tasks und thread
- 18.2.1 Argumente übergeben
- 18.2.2 Ergebnisse zurückgeben
- 18.3 Daten gemeinsam nutzen
- 18.3.1 mutexe und Locks
- 18.3.2 atomic
- 18.4 Warten auf Ereignisse
- 18.5 Kommunizierende Tasks
- 18.5.1 future und promise
- 18.5.2 packaged_task
- 18.5.3 async()
- 18.5.4 Einen Thread stoppen
- 18.6 Koroutinen
- 18.6.1 Kooperatives Multitasking
- 18.7 Ratschläge
- Kapitel 19: Geschichte und Kompatibilität
- 19.1 Geschichte
- 19.1.1 Chronik
- 19.1.2 Die frühen Jahre
- 19.1.3 Die ISO-C++-Standards
- 19.1.4 Standards und Stil
- 19.1.5 Verwendung von C++
- 19.1.6 Das C++-Modell
- 19.2 Die Entwicklung der Merkmale von C++
- 19.2.1 Sprachmerkmale von C++11
- 19.2.2 Sprachmerkmale von C++14
- 19.2.3 Sprachmerkmale von C++17
- 19.2.4 Sprachmerkmale von C++20
- 19.2.5 Komponenten der C++11-Standardbibliothek
- 19.2.6 Komponenten der C++14-Standardbibliothek
- 19.2.7 Komponenten der C++17-Standardbibliothek
- 19.2.8 Komponenten der C++20-Standardbibliothek
- 19.2.9 Entfernte und veraltete Funktionsmerkmale
- 19.3 C/C++-Kompatibilität
- 19.3.1 C und C++ sind Geschwister
- 19.3.2 Kompatibilitätsprobleme
- 19.4 Ratschläge
- Anhang A: module std
- A.1 Einführung
- A.2 Benutzen Sie, was Ihre Implementierung zu bieten hat
- A.3 Benutzen Sie Header
- A.4 Machen Sie sich Ihr eigenes module std
- A.5 Ratschläge
- Anhang B: Literaturverzeichnis
- B.1 Literaturhinweise.