Sie sind hier
E-Book

Der C++-Programmierer

C++ lernen - professionell anwenden - Lösungen nutzen.Aktuell zu C++17

AutorUlrich Breymann
VerlagCarl Hanser Fachbuchverlag
Erscheinungsjahr2017
Seitenanzahl1010 Seiten
ISBN9783446453869
FormatPDF
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis31,99 EUR
Ein C++-Praxisbuch für alle Ansprüche - mehr brauchen Einsteiger und Profis nicht - jetzt mit farbigem Code
'Der C++-Programmierer' entspricht dem ISO- Standard C++17. Das Buch stellt Grundlagen und fortgeschrittene Themen der C++-Programmierung vor. Es enthält über 150 praktische Lösungen für typische Aufgabenstellungen und mehr als 90 Übungsaufgaben - inkl. Musterlösungen.
C++ an Beispielen lernen
- Als C++-Neuling erhalten Sie eine motivierende Einführung in die Sprache C++. Die vielen Beispiele sind leicht nachzuvollziehen. Klassen und Objekte, Templates, STL und Exceptions sind bald keine Fremdwörter mehr für Sie.
- Als Profi finden Sie in diesem Buch kurze Einführungen zu Themen wie Thread- und Netzwerkprogrammierung und grafische Benutzungsoberflächen. Durch den Einsatz der Boost- und Qt-Libraries wird größtmögliche
Portabilität erreicht.
Kenntnisse in der Softwareentwicklung mit C++ vertiefen
Weil Softwareentwicklung nicht nur Programmierung ist, finden Sie ergänzend Themen für die professionelle Arbeit: Die effiziente Programmerzeugung mit make, Unit-Tests und TDD (Test Driven Development).
Das unverzichtbare Nachschlagewerk für alle
Das integrierte 'C++-Rezeptbuch' mit mehr als 150 praktischen Lösungen, das sehr umfangreiche Register und ein detailliertes Inhaltsverzeichnis machen das Buch zu einem unverzichtbaren Nachschlagewerk für alle, die sich im Studium oder professionell mit der Softwareentwicklung in C++ beschäftigen.

Prof. Dr. Ulrich Breymann lehrte Informatik an der Hochschule Bremen. Er engagierte sich im DIN-Arbeitskreis zur ersten Standardisierung von C++ und ist ein renommierter Autor zum Thema C++. Aus seiner Tätigkeit in Industrie und Hochschule weiß er genau, worauf es bei der Softwareentwicklung mit C++ ankommt. Er versteht es, auch komplexe Sachverhalte verständlich darzustellen.

Kaufen Sie hier:

Horizontale Tabs

Blick ins Buch
Inhaltsverzeichnis
Inhaltsverzeichnis6
Vorwort24
Teil I: Einführung in C++28
1 Es geht los!30
1.1 Historisches30
1.2 Objektorientierte Programmierung31
1.3 Werkzeuge zum Programmieren33
1.4 Das erste Programm34
1.4.1 Namenskonventionen40
1.5 Integrierte Entwicklungsumgebung40
1.6 Einfache Datentypen und Operatoren43
1.6.1 Ausdruck43
1.6.2 Ganze Zahlen43
1.6.3 Reelle Zahlen50
1.6.4 Konstanten54
1.6.5 Zeichen55
1.6.6 Logischer Datentyp bool59
1.6.7 Referenzen60
1.6.8 Regeln zum Bilden von Ausdrücken61
1.6.9 Standard-Typumwandlungen62
1.7 Gültigkeitsbereich und Sichtbarkeit63
1.7.1 Namespace std65
1.8 Kontrollstrukturen66
1.8.1 Anweisungen66
1.8.2 Sequenz (Reihung)68
1.8.3 Auswahl (Selektion, Verzweigung)68
1.8.4 Fallunterscheidungen mit switch73
1.8.5 Wiederholungen76
1.8.6 Kontrolle mit break und continue83
1.9 Benutzerdefinierte und zusammengesetzte Datentypen85
1.9.1 Aufzählungstypen85
1.9.2 Strukturen88
1.9.3 Der C++-Standardtyp vector89
1.9.4 Zeichenketten: Der C++-Standardtyp string94
1.9.5 Container und Schleifen96
1.9.6 Typermittlung mit auto98
1.9.7 Deklaration einer strukturierten Bindung mit auto99
1.9.8 Unions und Bitfelder100
1.10 Einfache Ein- und Ausgabe102
1.10.1 Standardein- und -ausgabe102
1.10.2 Ein- und Ausgabe mit Dateien105
2 Programmstrukturierung110
2.1 Funktionen110
2.1.1 Aufbau und Prototypen111
2.1.2 Gültigkeitsbereiche und Sichtbarkeit in Funktionen113
2.1.3 Lokale static-Variable: Funktion mit Gedächtnis114
2.2 Schnittstellen zum Datentransfer115
2.2.1 Übergabe per Wert116
2.2.2 Übergabe per Referenz120
2.2.3 Gefahren bei der Rückgabe von Referenzen121
2.2.4 Vorgegebene Parameterwerte und unterschiedliche Parameterzahl122
2.2.5 Überladen von Funktionen123
2.2.6 Funktion main()124
2.2.7 Beispiel Taschenrechnersimulation125
2.2.8 Spezifikation von Funktionen130
2.2.9 Alternative Funktions-Syntax130
2.3 Modulare Programmgestaltung130
2.3.1 Steuerung der Übersetzung nur mit #include131
2.3.2 Einbinden vorübersetzter Programmteile131
2.3.3 Übersetzungseinheit, Deklaration, Definition133
2.3.4 Dateiübergreifende Gültigkeit und Sichtbarkeit135
2.3.5 Präprozessordirektiven und Makros137
2.4 Namensräume145
2.5 inline-Funktionen und -Variable147
2.5.1 inline-Variablen148
2.6 constexpr-Funktionen148
2.7 Rückgabetyp auto150
2.8 Funktions-Templates152
2.8.1 Spezialisierung von Templates154
2.8.2 Einbinden von Templates155
2.9 C++-Header157
2.9.1 Einbinden von C-Funktionen159
3 Objektorientierung 1160
3.1 Abstrakter Datentyp161
3.2 Klassen und Objekte162
3.2.1 const-Objekte und Methoden165
3.2.2 inline-Elementfunktionen166
3.3 Initialisierung und Konstruktoren167
3.3.1 Standardkonstruktor167
3.3.2 Direkte Initialisierung der Attribute169
3.3.3 Allgemeine Konstruktoren169
3.3.4 Kopierkonstruktor172
3.3.5 Typumwandlungskonstruktor175
3.3.6 Konstruktor und mehr vorgeben oder verbieten177
3.3.7 Einheitliche Initialisierung und Sequenzkonstruktor177
3.3.8 Delegierender Konstruktor180
3.3.9 constexpr-Konstruktor und -Methoden181
3.4 Beispiel: Rationale Zahlen184
3.4.1 Aufgabenstellung184
3.4.2 Entwurf185
3.4.3 Implementation188
3.5 Destruktoren193
3.6 Wie kommt man zu Klassen und Objekten? Ein Beispiel195
3.7 Gegenseitige Abhängigkeit von Klassen200
4 Intermezzo: Zeiger202
4.1 Zeiger und Adressen203
4.2 C-Arrays206
4.2.1 C-Array, std::size() und sizeof208
4.2.2 Initialisierung von C-Arrays209
4.2.3 Zeigerarithmetik209
4.2.4 Indexoperator bei C-Arrays210
4.2.5 C-Array mit begin() und end() durchlaufen210
4.3 C-Zeichenketten211
4.3.1 Schleifen und C-Strings214
4.4 Dynamische Datenobjekte218
4.4.1 Freigeben dynamischer Objekte221
4.5 Zeiger und Funktionen223
4.5.1 Parameterübergabe mit Zeigern223
4.5.2 Array als Funktionsparameter225
4.5.3 const und Zeiger-Parameter226
4.5.4 Parameter des main-Programms226
4.5.5 Gefahren bei der Rückgabe von Zeigern227
4.6 this-Zeiger228
4.7 Mehrdimensionale C-Arrays230
4.7.1 Statische mehrdimensionale C-Arrays230
4.7.2 Mehrdimensionales Array als Funktionsparameter231
4.7.3 Dynamisch erzeugte mehrdimensionale Arrays234
4.7.4 Klasse für dynamisches zweidimensionales Array236
4.8 Binäre Ein-/Ausgabe242
4.9 Zeiger auf Funktionen245
4.10 Typumwandlungen für Zeiger249
4.11 Zeiger auf Elementfunktionen und -daten250
4.11.1 Zeiger auf Elementfunktionen250
4.11.2 Zeiger auf Elementdaten251
4.12 Komplexe Deklarationen lesen251
4.12.1 Lesbarkeit mit typedef und using verbessern252
4.13 Alternative zu rohen Zeigern, new und delete254
5 Objektorientierung 2256
5.1 Eine String-Klasse256
5.1.1 friend-Funktionen262
5.2 String-Ansicht263
5.3 Klassenspezifische Daten und Funktionen266
5.3.1 Klassenspezifische Konstante270
5.4 Klassen-Templates272
5.4.1 Ein Stack-Template272
5.4.2 Stack mit statisch festgelegter Größe274
5.5 Typbestimmung mit decltype und declval276
6 Vererbung280
6.1 Vererbung und Initialisierung286
6.2 Zugriffsschutz287
6.3 Typbeziehung zwischen Ober- und Unterklasse289
6.4 Code-Wiederverwendung290
6.4.1 Konstruktor erben291
6.5 Überschreiben von Funktionen in abgeleiteten Klassen293
6.5.1 Virtuelle Funktionen295
6.5.2 Abstrakte Klassen300
6.5.3 Virtueller Destruktor305
6.5.4 Private virtuelle Funktionen308
6.6 Probleme der Modellierung mit Vererbung310
6.7 Mehrfachvererbung313
6.7.1 Namenskonflikte315
6.7.2 Virtuelle Basisklassen316
6.8 Standard-Typumwandlungsoperatoren320
6.9 Typinformationen zur Laufzeit323
6.10 Using-Deklaration für protected-Funktionen324
6.11 Private- und Protected-Vererbung325
7 Fehlerbehandlung330
7.1 Ausnahmebehandlung332
7.1.1 Exception-Spezifikation in Deklarationen335
7.1.2 Exception-Hierarchie in C++336
7.1.3 Besondere Fehlerbehandlungsfunktionen338
7.1.4 Erkennen logischer Fehler339
7.1.5 Arithmetische Fehler / Division durch 0341
7.2 Speicherbeschaffung mit new342
7.3 Exception-Sicherheit343
8 Überladen von Operatoren346
8.1 Rationale Zahlen — noch einmal348
8.1.1 Arithmetische Operatoren348
8.1.2 Ausgabeoperator <<350
8.2 Eine Klasse für Vektoren352
8.2.1 Index-Operator [ ]355
8.2.2 Zuweisungsoperator =357
8.2.3 Mathematische Vektoren360
8.2.4 Multiplikationsoperator361
8.3 Inkrement-Operator ++362
8.4 Typumwandlungsoperator366
8.5 Smart Pointer: Operatoren -> und *368
8.5.1 Smart Pointer und die C++-Standardbibliothek373
8.6 Objekt als Funktion374
8.7 new und delete überladen376
8.7.1 Unterscheidung zwischen Heap- und Stack-Objekten379
8.7.2 Fehlende delete-Anweisung entdecken381
8.7.3 Eigene Speicherverwaltung für einen bestimmten Typ382
8.7.4 Empfehlungen im Umgang mit new und delete386
8.8 Operatoren für Literale387
8.8.1 Stringliterale388
8.8.2 Benutzerdefinierte Literale389
8.9 Mehrdimensionale Matrizen391
8.9.1 Zweidimensionale Matrix als Vektor von Vektoren392
8.9.2 Dreidimensionale Matrix395
8.10 Zuweisung und Vergleich bei Vererbung397
9 Dateien und Ströme406
9.1 Ausgabe408
9.1.1 Formatierung der Ausgabe408
9.2 Eingabe411
9.3 Manipulatoren414
9.3.1 Eigene Manipulatoren419
9.4 Fehlerbehandlung421
9.5 Typumwandlung von Dateiobjekten nach bool422
9.6 Arbeit mit Dateien423
9.6.1 Positionierung in Dateien424
9.6.2 Lesen und Schreiben in derselben Datei425
9.7 Umleitung auf Strings426
9.8 Tabelle formatiert ausgeben428
9.9 Formatierte Daten lesen429
9.9.1 Eingabe benutzerdefinierter Typen429
9.10 Blockweise lesen und schreiben430
9.10.1 vector-Objekt binär lesen und schreiben431
9.10.2 array-Objekt binär lesen und schreiben432
9.10.3 Matrix binär lesen und schreiben433
9.11 Ergänzungen435
10 Die Standard Template Library (STL)436
10.1 Container, Iteratoren, Algorithmen437
10.2 Iteratoren im Detail442
10.3 Beispiel verkettete Liste443
Teil II: Fortgeschrittene Themen448
11 Performance, Wert- und Referenzsemantik450
11.1 Performanceproblem Wertsemantik451
11.1.1 Auslassen der Kopie452
11.1.2 Temporäre Objekte bei der Zuweisung453
11.2 Referenzsemantik für R-Werte454
11.3 Optimierung durch Referenzsemantik für R-Werte456
11.3.1 Bewegender Konstruktor459
11.3.2 Bewegender Zuweisungsoperator459
11.4 Die move()-Funktion460
11.4.1 Regel zur Template-Auswertung von &&-Parametern462
11.5 Ein effizienter binärer Plusoperator463
11.5.1 Return Value Optimization (RVO)464
11.5.2 Kopien temporärer Objekte eliminieren464
11.5.3 Verbesserung durch verzögerte Auswertung465
11.5.4 Weitere Optimierungsmöglichkeiten467
11.6 Rule of three/five/zero468
11.6.1 Rule of three468
11.6.2 Rule of five468
11.6.3 Rule of zero469
12 Lambda-Funktionen470
12.1 Eigenschaften471
12.1.1 Äquivalenz zum Funktionszeiger472
12.1.2 Lambda-Funktion und Klasse473
12.2 Generische Lambda-Funktionen473
12.3 Parametererfassung mit []476
13 Template-Metaprogrammierung478
13.1 Grundlagen478
13.2 Variadic Templates: Templates mit variabler Parameterzahl481
13.2.1 Ablauf der Auswertung durch den Compiler482
13.2.2 Anzahl der Parameter483
13.2.3 Parameterexpansion483
13.3 Fold-Expressions485
13.3.1 Weitere Varianten486
13.3.2 Fold-Expression mit Kommaoperator487
13.4 Klassen-Template mit variabler Stelligkeit489
14 Reguläre Ausdrücke490
14.1 Elemente regulärer Ausdrücke491
14.1.1 Greedy oder lazy?493
14.2 Interaktive Auswertung494
14.3 Auszug des regex-API497
14.4 Verarbeitung von \n499
14.5 Anwendungen500
15 Threads502
15.1 Zeit und Dauer503
15.2 Threads504
15.3 Die Klasse thread508
15.3.1 Thread-Group510
15.4 Synchronisation kritischer Abschnitte511
15.5 Thread-Steuerung: Pausieren, Fortsetzen, Beenden514
15.5.1 Data Race519
15.6 Warten auf Ereignisse519
15.7 Reader/Writer-Problem525
15.7.1 Wenn Threads verhungern529
15.7.2 Reader/Writer-Varianten530
15.8 Atomare Veränderung von Variablen530
15.9 Asynchrone verteilte Bearbeitung einer Aufgabe533
15.10 Thread-Sicherheit535
16 Grafische Benutzungsschnittstellen536
16.1 Ereignisgesteuerte Programmierung537
16.2 GUI-Programmierung mit Qt538
16.2.1 Installation und Einsatz538
16.2.2 Meta-Objektsystem539
16.2.3 Der Programmablauf540
16.2.4 Ereignis abfragen541
16.3 Signale, Slots und Widgets542
16.4 Dialog551
16.5 Qt oder Standard-C++?554
16.5.1 Threads555
16.5.2 Verzeichnisbaum durchwandern556
17 Internet-Anbindung558
17.1 Protokolle559
17.2 Adressen559
17.3 Socket563
17.3.1 Bidirektionale Kommunikation566
17.3.2 UDP-Sockets568
17.3.3 Atomuhr mit UDP abfragen569
17.4 HTTP572
17.4.1 Verbindung mit GET573
17.4.2 Verbindung mit POST578
17.5 Mini-Webserver579
18 Datenbankanbindung588
18.1 C++-Interface589
18.2 Anwendungsbeispiel593
Teil III: Ausgewählte Methoden und Werkzeuge der Softwareentwicklung600
19 Effiziente Programmerzeugung mit make602
19.1 Wirkungsweise604
19.2 Variablen und Muster606
19.3 Universelles Makefile für einfache Projekte607
19.4 Automatische Ermittlung von Abhängigkeiten608
19.4.1 Getrennte Verzeichnisse: src, obj, bin610
19.5 Makefile für Verzeichnisbäume612
19.5.1 Rekursive Make-Aufrufe613
19.5.2 Ein Makefile für alles615
19.6 Automatische Erzeugung von Makefiles616
19.6.1 Makefile für rekursive Aufrufe erzeugen617
19.7 Erzeugen von Bibliotheken618
19.7.1 Statische Bibliotheksmodule618
19.7.2 Dynamische Bibliotheksmodule620
19.8 Code Bloat bei der Instanziierung von Templates vermeiden623
19.8.1 extern-Template624
19.9 CMake625
19.10 GNU Autotools627
20 Unit-Test628
20.1 Werkzeuge629
20.2 Test Driven Development630
20.3 Boost Unit Test Framework631
20.3.1 Beispiel: Testgetriebene Entwicklung einer Operatorfunktion633
20.3.2 Fixture637
20.3.3 Testprotokoll und Log-Level638
20.3.4 Prüf-Makros639
20.3.5 Kommandozeilen-Optionen643
Teil IV: Das C++-Rezeptbuch: Tipps und Lösungen für typische Aufgaben644
21 Sichere Programmentwicklung646
21.1 Regeln zum Design von Methoden646
21.2 Defensive Programmierung648
21.2.1 double- und float-Werte richtig vergleichen649
21.2.2 const und constexpr verwenden650
21.2.3 Anweisungen nach for/if/while einklammern650
21.2.4 int und unsigned/size_t nicht mischen650
21.2.5 size_t oder auto statt unsigned int verwenden651
21.2.6 Postfix++ mit Präfix++ implementieren651
21.2.7 Ein Destruktor darf keine Exception werfen652
21.2.8 explicit-Typumwandlungsoperator bevorzugen652
21.2.9 explicit-Konstruktor für eine Typumwandlung bevorzugen652
21.2.10 Leere Standardkonstruktoren vermeiden652
21.2.11 Mit override Schreibfehler reduzieren652
21.2.12 Kopieren und Zuweisung verbieten652
21.2.13 Vererbung verbieten653
21.2.14 Überschreiben einer virtuellen Methode verhindern654
21.2.15 >>Rule of zero<< beachten654
21.2.16 One Definition Rule654
21.2.17 Defensiv Objekte löschen654
21.2.18 Speicherbeschaffung und -freigabe kapseln655
21.2.19 Programmierrichtlinien einhalten655
21.3 Exception-sichere Beschaffung von Ressourcen655
21.3.1 Sichere Verwendung von unique_ptr und shared_ptr655
21.3.2 So vermeiden Sie new und delete!656
21.3.3 shared_ptr für Arrays korrekt verwenden657
21.3.4 unique_ptr für Arrays korrekt verwenden658
21.3.5 Exception-sichere Funktion659
21.3.6 Exception-sicherer Konstruktor659
21.3.7 Exception-sichere Zuweisung660
21.4 Empfehlungen zur Thread-Programmierung661
21.4.1 Warten auf die Freigabe von Ressourcen661
21.4.2 Deadlock-Vermeidung662
21.4.3 notify_all oder notify_one?662
21.4.4 Performance mit Threads verbessern?663
22 Von der UML nach C++664
22.1 Vererbung664
22.2 Interface anbieten und nutzen665
22.3 Assoziation667
22.3.1 Aggregation670
22.3.2 Komposition670
23 Algorithmen für verschiedene Aufgaben672
23.1 Algorithmen mit Strings673
23.1.1 String splitten673
23.1.2 String in Zahl umwandeln674
23.1.3 Zahl in String umwandeln676
23.1.4 Strings sprachlich richtig sortieren677
23.1.5 Umwandlung in Klein- bzw. Großschreibung679
23.1.6 Strings sprachlich richtig vergleichen681
23.1.7 Von der Groß-/Kleinschreibung unabhängiger Zeichenvergleich682
23.1.8 Von der Groß-/Kleinschreibung unabhängige Suche683
23.2 Textverarbeitung684
23.2.1 Datei durchsuchen684
23.2.2 Ersetzungen in einer Datei686
23.2.3 Lines of Code (LOC) ermitteln688
23.2.4 Zeilen, Wörter und Zeichen einer Datei zählen689
23.2.5 CSV-Datei lesen689
23.2.6 Kreuzreferenzliste690
23.3 Operationen auf Folgen693
23.3.1 Container anzeigen694
23.3.2 Folge mit gleichen Werten initialisieren694
23.3.3 Folge mit Werten eines Generators initialisieren695
23.3.4 Folge mit fortlaufenden Werten initialisieren695
23.3.5 Summe und Produkt696
23.3.6 Mittelwert und Standardabweichung697
23.3.7 Skalarprodukt697
23.3.8 Folge der Teilsummen oder -produkte698
23.3.9 Folge der Differenzen699
23.3.10 Kleinstes und größtes Element finden700
23.3.11 Elemente rotieren702
23.3.12 Elemente verwürfeln703
23.3.13 Dubletten entfernen703
23.3.14 Reihenfolge umdrehen705
23.3.15 Stichprobe706
23.3.16 Anzahl der Elemente, die einer Bedingung genügen707
23.3.17 Gilt ein Prädikat für alle, keins oder wenigstens ein Element einer Folge?708
23.3.18 Permutationen709
23.3.19 Lexikografischer Vergleich712
23.4 Sortieren und Verwandtes713
23.4.1 Partitionieren713
23.4.2 Sortieren715
23.4.3 Stabiles Sortieren716
23.4.4 Partielles Sortieren717
23.4.5 Das n.-größte oder n.-kleinste Element finden718
23.4.6 Verschmelzen (merge)719
23.5 Suchen und Finden722
23.5.1 Element finden722
23.5.2 Element einer Menge in der Folge finden723
23.5.3 Teilfolge finden724
23.5.4 Teilfolge mit speziellem Algorithmus finden725
23.5.5 Bestimmte benachbarte Elemente finden727
23.5.6 Bestimmte aufeinanderfolgende Werte finden728
23.5.7 Binäre Suche729
23.6 Mengenoperationen auf sortierten Strukturen731
23.6.1 Teilmengenrelation732
23.6.2 Vereinigung733
23.6.3 Schnittmenge734
23.6.4 Differenz734
23.6.5 Symmetrische Differenz735
23.7 Heap-Algorithmen736
23.7.1 pop_heap737
23.7.2 push_heap738
23.7.3 make_heap738
23.7.4 sort_heap739
23.7.5 is_heap739
23.8 Vergleich von Containern auch ungleichen Typs740
23.8.1 Unterschiedliche Elemente finden740
23.8.2 Prüfung auf gleiche Inhalte742
23.9 Rechnen mit komplexen Zahlen: Der C++-Standardtyp complex743
23.10 Schnelle zweidimensionale Matrix745
23.10.1 Optimierung mathematischer Array-Operationen748
23.11 Vermischtes751
23.11.1 Erkennung eines Datums751
23.11.2 Erkennung einer IPv4-Adresse753
23.11.3 Erzeugen von Zufallszahlen754
23.11.4 for_each — Auf jedem Element eine Funktion ausführen759
23.11.5 Verschiedene Möglichkeiten, Container-Bereiche zu kopieren759
23.11.6 Vertauschen von Elementen, Bereichen und Containern762
23.11.7 Elemente transformieren762
23.11.8 Ersetzen und Varianten764
23.11.9 Elemente herausfiltern765
23.11.10 Grenzwerte von Zahltypen767
23.11.11 Minimum und Maximum767
23.11.12 Wert begrenzen769
23.11.13 ggT und kgV770
23.12 Parallelisierbare Algorithmen771
24 Datei- und Verzeichnisoperationen772
24.1 Übersicht773
24.2 Pfadoperationen774
24.3 Datei oder Verzeichnis löschen775
24.3.1 Möglicherweise gefülltes Verzeichnis löschen776
24.4 Datei oder Verzeichnis kopieren777
24.5 Datei oder Verzeichnis umbenennen778
24.6 Verzeichnis anlegen778
24.7 Verzeichnis anzeigen779
24.8 Verzeichnisbaum anzeigen780
Teil V: Die C++-Standardbibliothek782
25 Aufbau und Übersicht784
25.1 Auslassungen786
25.2 Beispiele des Buchs und die C++-Standardbibliothek787
26 Hilfsfunktionen und -klassen790
26.1 Relationale Operatoren790
26.2 Unterstützung der Referenzsemantik für R-Werte791
26.2.1 move()791
26.2.2 forward()792
26.3 Paare793
26.4 Tupel795
26.5 bitset797
26.6 Indexfolgen800
26.7 variant statt union801
26.8 Funktionsobjekte802
26.8.1 Arithmetische, vergleichende und logische Operationen802
26.8.2 Binden von Argumentwerten803
26.8.3 Funktionen in Objekte umwandeln805
26.9 Templates für rationale Zahlen807
26.10 Hüllklasse für Referenzen808
26.11 Optionale Objekte809
26.12 Type Traits811
26.12.1 Wie funktionieren Type Traits? — ein Beispiel812
26.12.2 Abfrage von Eigenschaften814
26.12.3 Abfrage numerischer Eigenschaften816
26.12.4 Typbeziehungen816
26.12.5 Typumwandlungen817
26.13 Auswahl weiterer Traits817
26.13.1 decay817
26.13.2 enable_if817
26.13.3 conditional818
26.13.4 default_order818
27 Container820
27.1 Gemeinsame Eigenschaften822
27.1.1 Initialisierungslisten824
27.1.2 Konstruktion an Ort und Stelle824
27.1.3 Reversible Container825
27.2 Sequenzen826
27.2.1 vector827
27.2.2 vector828
27.2.3 list829
27.2.4 deque832
27.2.5 stack833
27.2.6 queue835
27.2.7 priority_queue837
27.2.8 array839
27.3 Assoziative Container841
27.4 Sortierte assoziative Container843
27.4.1 map und multimap844
27.4.2 set und multiset848
27.5 Hash-Container850
27.5.1 unordered_map und unordered_multimap854
27.5.2 unordered_set und unordered_multiset856
28 Iteratoren858
28.1 Iterator-Kategorien859
28.1.1 Anwendung von Traits860
28.2 Abstand und Bewegen863
28.3 Zugriff auf Anfang und Ende864
28.3.1 Reverse-Iteratoren865
28.4 Insert-Iteratoren866
28.5 Stream-Iteratoren867
29 Algorithmen870
29.1 Algorithmen mit Prädikat871
29.2 Übersicht872
30 Nationale Besonderheiten876
30.1 Sprachumgebung festlegen und ändern876
30.1.1 Die locale-Funktionen878
30.2 Zeichensätze und -codierung880
30.3 Zeichenklassifizierung und -umwandlung884
30.4 Kategorien885
30.4.1 collate885
30.4.2 ctype886
30.4.3 numeric888
30.4.4 monetary889
30.4.5 time892
30.4.6 messages894
30.5 Konstruktion eigener Facetten896
31 String898
31.1 string_view für String-Literale908
32 Speichermanagement910
32.1 unique_ptr910
32.1.1 make_unique912
32.2 shared_ptr913
32.2.1 make_shared914
32.2.2 Typumwandlung in einen Oberklassentyp914
32.3 weak_ptr915
32.4 new mit Speicherortangabe916
33 Numerische Arrays (valarray)918
33.1 Konstruktoren919
33.2 Elementfunktionen919
33.3 Binäre Valarray-Operatoren922
33.4 Mathematische Funktionen924
33.5 slice und slice_array925
33.6 gslice und gslice_array928
33.7 mask_array931
33.8 indirect_array932
34 Ausgewählte C-Header934
34.1 934
34.2 935
34.3 935
34.4 937
34.5 937
34.6 938
34.7 940
A Anhang942
A.1 ASCII-Tabelle942
A.2 C++-Schlüsselwörter944
A.3 Compilerbefehle945
A.4 Rangfolge der Operatoren946
A.5 C++-Attribute für den Compiler947
A.6 Lösungen zu den Übungsaufgaben948
A.7 Installation der Software für Windows958
A.7.1 Installation des Compilers und der Entwicklungsumgebung958
A.7.2 Integrierte Entwicklungsumgebung einrichten959
A.7.3 De-Installation959
A.8 Installation der Software für Linux960
A.8.1 Installation des Compilers960
A.8.2 Installation von Boost961
A.8.3 Installation und Einrichtung von Code::Blocks961
A.8.4 Beispieldateien entpacken962
A.9 Installationshinweise für OS X962
A.9.1 Installation von Boost962
A.9.2 Beispieldateien entpacken963
Glossar964
Literaturverzeichnis974
Register978
1001_1008_Breymann_5A_Anzeigen.pdf1
CHV_Anz_Seite1001_Gloger_447231002
CHV_Anz_Seite1001_Gloger_447231003
CHV_Anz_Seite1003_Leopold_443431004
CHV_Anz_Seite1003_Leopold_443431005
CHV_Anz_Seite1005_FreundRücker_5A_450541006
CHV_Anz_Seite1005_FreundRücker_5A_450541007
CHV_Anz_Seite1007_Starke_7A_443611008
CHV_Anz_Seite1007_Starke_7A_443611009

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

Programmieren lernen in PHP 5

E-Book Programmieren lernen in PHP 5
Format: PDF

Mit der Version 5 erreicht PHP einen bemerkenswerten Reifegrad, der PHP zu einer festen Größe in der Welt der Webprogrammierung macht. Gerade die leichte Erlernbarkeit macht PHP zur idealen…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Weitere Zeitschriften

Menschen. Inklusiv leben

Menschen. Inklusiv leben

MENSCHEN. das magazin informiert über Themen, die das Zusammenleben von Menschen in der Gesellschaft bestimmen -und dies konsequent aus Perspektive der Betroffenen. Die Menschen, um die es geht, ...

ARCH+.

ARCH+.

ARCH+ ist eine unabhängige, konzeptuelle Zeitschrift für Architektur und Urbanismus. Der Name ist zugleich Programm: mehr als Architektur. Jedes vierteljährlich erscheinende Heft beleuchtet ...

Bibel für heute

Bibel für heute

BIBEL FÜR HEUTE ist die Bibellese für alle, die die tägliche Routine durchbrechen wollen: Um sich intensiver mit einem Bibeltext zu beschäftigen. Um beim Bibel lesen Einblicke in Gottes ...

Courier

Courier

The Bayer CropScience Magazine for Modern AgriculturePflanzenschutzmagazin für den Landwirt, landwirtschaftlichen Berater, Händler und generell am Thema Interessierten, mit umfassender ...

Die Versicherungspraxis

Die Versicherungspraxis

Behandlung versicherungsrelevanter Themen. Erfahren Sie mehr über den DVS. Der DVS Deutscher Versicherungs-Schutzverband e.V, Bonn, ist der Interessenvertreter der versicherungsnehmenden Wirtschaft. ...

EineWelt

EineWelt

Lebendige Reportagen, spannende Interviews, interessante Meldungen, informative Hintergrundberichte. Lesen Sie in der Zeitschrift „EineWelt“, was Menschen in Mission und Kirche bewegt Man kann ...