cpp23-listings-README.md
Listings of Gesamt.docx
This is linked summary of the listings. You can also view it on one page.
- Listing 1.1: Ein kleines Formatbeispiel
- Book: lst-0001-book.cpp
- Godbolt: lst-0001-godb.cpp, https://godbolt.org/z/jrqEGvh1M
- Listing 2.1: Jede Fibonacci-Zahl ist die Summe der beiden Zahlen davor.
- Book: lst-0002-book.cpp
- Godbolt: lst-0002-godb.cpp, https://godbolt.org/z/aEvcPWzn5
- Listing 2.2: Eine zügig erstellte Tabelle von Fibonacci-Zahlen
- Book: lst-0003-book.cpp
- Godbolt: lst-0003-godb.cpp, https://godbolt.org/z/Tbx6qdrfx
- Listing 3.2: (C++) In C++ hat man statt Referenzen erst einmal Werte.
- Book: lst-0004-book.cpp
- Listing 3.3: (C++) Modernes C++ mit Heapspeicher nutzt Hilfsklassen wie shared_ptr.
- Book: lst-0005-book.cpp
- Godbolt: lst-0005-godb.cpp, https://godbolt.org/z/WM11Gs6sz
- Listing 3.4: (C++) Ohne moderne C++-Mittel muss man besonders auf den Zeigerbesitz achten.
- Book: lst-0006-book.cpp
- Godbolt: lst-0006-godb.cpp, https://godbolt.org/z/Ee7eqq1MY
- Listing 3.6: (C++) const kann den Wert oder die Referenz schützen.
- Book: lst-0007-book.cpp
- Godbolt: lst-0007-godb.cpp, https://godbolt.org/z/Moe5M7sK8
- Listing 4.7: Ein sehr einfaches C++-Programm
- Book: lst-0008-book.cpp
- Godbolt: lst-0008-godb.cpp, https://godbolt.org/z/Mdj7bGvar
- Listing 4.8: Dieses Programm fragt seine Benutzer nach einer Zahl.
- Book: lst-0016-book.cpp
- Godbolt: lst-0016-godb.cpp, https://godbolt.org/z/d7Yjr9jdb
- Listing 4.9: Ein sehr außergewöhnlich formatiertes Stück Quellcode
- Book: lst-0017-book.cpp
- Godbolt: lst-0017-godb.cpp, https://godbolt.org/z/eWfGbv1dG
- Listing 4.10: Kommentare mit / und / können über mehrere Zeilen gehen oder eine Programmzeile auch unterbrechen.
- Book: lst-0018-book.cpp
- Listing 4.11: Eine eigene C++-Funktion
- Book: lst-0021-book.cpp
- Godbolt: lst-0021-godb.cpp, https://godbolt.org/z/qWxq4KEKr
- Listing 4.12: Präfixoperatoren werden vor der Berechnung ausgeführt.
- Book: lst-0022-book.cpp
- Godbolt: lst-0022-godb.cpp, https://godbolt.org/z/4Mr6fnaEr
- GodboltId:r5hjrqqK9
- Book: lst-0024-book.cpp
- Godbolt: lst-0024-godb.cpp, https://godbolt.org/z/r5hjrqqK9
- Listing 4.13: Ein Programm, das nur aus main und return besteht
- Book: lst-0025-book.cpp
- Listing 4.14: Hier setzen Sie nur die äußeren geschweiftenKlammern.
- Book: lst-0026-book.cpp
- Listing 4.15: So sieht es aus, wenn Sie alle geschweiften Klammern setzen.
- Book: lst-0027-book.cpp
- Listing 4.16: Das »if« ist eine Anweisung und benötigt eigentlich keine geschweiften Klammern.
- Book: lst-0028-book.cpp
- Listing 4.17: Setzen Sie besser auch einzelne Anweisungen in geschweifte Klammern.
- Book: lst-0030-book.cpp
- Listing 4.18: Zuweisung des Ergebnisses eines Funktionsaufrufs
- Book: lst-0033-book.cpp
- Listing 4.19: Zuweisung des Ergebnisses einer Berechnung
- Book: lst-0034-book.cpp
- Listing 4.20: Eine Zuweisung ist ein Ausdruck mit dem Typ der zugewiesenen Variablen.
- Book: lst-0035-book.cpp
- Godbolt: lst-0035-godb.cpp, https://godbolt.org/z/bh1MsPhje
- Listing 4.21: Der Compiler hilft, korrekte Programme zu schreiben, indem er die Typen überprüft.
- Book: lst-0036-book.cpp
- Godbolt: lst-0036-godb.cpp, https://godbolt.org/z/9943MfExc
- Listing 4.22: Variablen vom Typ bool können das Ergebnis eines Vergleichs zwischenspeichern.
- Book: lst-0037-book.cpp
- Godbolt: lst-0037-godb.cpp, https://godbolt.org/z/zK9Ke9n48
- Listing 4.23: So können Sie einen C++-string als Literal in den Quellcode schreiben.
- Book: lst-0039-book.cpp
- Godbolt: lst-0039-godb.cpp, https://godbolt.org/z/chTTqPjrM
- Listing 4.24: Seit C++17 bestimmt der Compiler die Typparameter von Klassentemplates anhand der Konstruktorargumente.
- Book: lst-0041-book.cpp
- Godbolt: lst-0041-godb.cpp, https://godbolt.org/z/GbbcnYbqv
- Listing 4.25: Manchen Variablen können Sie nichts zuweisen, Sie können sie nur initialisieren.
- Book: lst-0042-book.cpp
- Listing 4.26: Statt des = können Sie {…} zur Initialisierung verwenden.
- Book: lst-0043-book.cpp
- Listing 4.27: Sie können einen Namensraum einbinden, um Programmtext kürzer zu machen.
- Book: lst-0050-book.cpp
- Listing 4.28: »using namespace« können Sie auch global verwenden, sollten es aber selten tun.
- Book: lst-0051-book.cpp
- Listing 4.29: Holen Sie sich mit »using« einzelne Bezeichner.
- Book: lst-0052-book.cpp
- Listing 4.30: Arithmetische Operatoren in der Anwendung
- Book: lst-0053-book.cpp
- Godbolt: lst-0053-godb.cpp, https://godbolt.org/z/cEGGfoeT7
- Listing 4.31: Programmierbeispiel für die Umwandlung einer Ganzzahl in eine Bitfolge
- Book: lst-0056-book.cpp
- Godbolt: lst-0056-godb.cpp, https://godbolt.org/z/nMcsbxvvv
- GodboltId:TTjxzrYf3
- Book: lst-0057-book.cpp
- Godbolt: lst-0057-godb.cpp, https://godbolt.org/z/TTjxzrYf3
- GodboltId:5hqanTeYh
- Book: lst-0059-book.cpp
- Godbolt: lst-0059-godb.cpp, https://godbolt.org/z/5hqanTeYh
- GodboltId:xrMYz93WP
- Book: lst-0068-book.cpp
- Godbolt: lst-0068-godb.cpp, https://godbolt.org/z/xrMYz93WP
- Listing 4.32: Mit Kommas in Klammern können Sie mehrere Ausdrücke verketten.
- Book: lst-0069-book.cpp
- Godbolt: lst-0069-godb.cpp, https://godbolt.org/z/rq66cWr3d
- Listing 4.33: In for-Schleifen kann das Sequenzkomma nützlich sein.
- Book: lst-0070-book.cpp
- Godbolt: lst-0070-godb.cpp, https://godbolt.org/z/vd85f7rMj
- Listing 4.34: Hier werden einige neue Datentypen verwendet.
- Book: lst-0074-book.cpp
- Godbolt: lst-0074-godb.cpp, https://godbolt.org/z/3Y65Ps6G4
- Listing 4.35: Arithmetik mit Ganzzahlen
- Book: lst-0076-book.cpp
- Godbolt: lst-0076-godb.cpp, https://godbolt.org/z/ebPcdxzvj
- Listing 4.36: Bitoperationen
- Book: lst-0077-book.cpp
- Godbolt: lst-0077-godb.cpp, https://godbolt.org/z/jeTs5Exqx
- Listing 4.37: Indexvariablen können gut vom Typ »size_t« sein.
- Book: lst-0079-book.cpp
- Godbolt: lst-0079-godb.cpp, https://godbolt.org/z/zGso3xGcj
- Listing 4.41: »double« kann Zahlen nicht immer exakt speichern. Rechnen und Vergleichen mit »==« ist ein Fehler.
- Book: lst-0080-book.cpp
- Godbolt: lst-0080-godb.cpp, https://godbolt.org/z/h86Wh5dbo
- Listing 4.39: Mehrere Möglichkeiten, um »double«-Literale zu kennzeichnen
- Book: lst-0081-book.cpp
- Godbolt: lst-0081-godb.cpp, https://godbolt.org/z/f7T5Y6sd3
- Listing 4.43: Fließkommaliterale werden irgendwann ungenau.
- Book: lst-0082-book.cpp
- Godbolt: lst-0082-godb.cpp, https://godbolt.org/z/6qfo4oYnr
- Listing 4.44: Unter anderem können Sie mit »fpclassify« besondere Werte entdecken.
- Book: lst-0083-book.cpp
- Godbolt: lst-0083-godb.cpp, https://godbolt.org/z/v98fWc49E
- GodboltId:We3oWrcWW
- Book: lst-0086-book.cpp
- Godbolt: lst-0086-godb.cpp, https://godbolt.org/z/We3oWrcWW
- GodboltId:863b1z4GY
- Book: lst-0087-book.cpp
- Godbolt: lst-0087-godb.cpp, https://godbolt.org/z/863b1z4GY
- Listing 4.45: Akkumulierte Zeitmessung
- Book: lst-0088-book.cpp
- Godbolt: lst-0088-godb.cpp, https://godbolt.org/z/drz7fzohh
- Listing 4.46: Geschlossene Zeitberechnung
- Book: lst-0089-book.cpp
- Godbolt: lst-0089-godb.cpp, https://godbolt.org/z/xz6TGdc19
- Listing 4.47: Mit komplexen Zahlen können Sie arithmetisch rechnen.
- Book: lst-0093-book.cpp
- Godbolt: lst-0093-godb.cpp, https://godbolt.org/z/43rYYeKx9
- Listing 4.48: Ausgabe in unspezifizierter Reihenfolge
- Book: lst-0095-book.cpp
- Godbolt: lst-0095-godb.cpp, https://godbolt.org/z/eW1cfYcGs
- Listing 5.1: Einrückung vier, Klammern in Zeile mit Schlüsselwort, wenige Leerzeichen
- Book: lst-0097-book.cpp
- Godbolt: lst-0097-godb.cpp, https://godbolt.org/z/eP77v498E
- Listing 5.2: Einrückung zwei, Klammern nur wenn nötig und in eigener Zeile, mehr Leerzeichen
- Book: lst-0098-book.cpp
- Godbolt: lst-0098-godb.cpp, https://godbolt.org/z/4TMn37qhE
- Listing 6.1: Einige Verwendungsmöglichkeiten von Strings
- Book: lst-0099-book.cpp
- Godbolt: lst-0099-godb.cpp, https://godbolt.org/z/vMvs47nfs
- Listing 6.2: Eine string_view lässt sich aus einen string leicht erzeugen.
- Book: lst-0102-book.cpp
- Listing 6.3: Der Fehlerstream ist von der Standardausgabe getrennt.
- Book: lst-0103-book.cpp
- Listing 6.4: Eine Funktion mit Ein- und Ausgabe
- Book: lst-0104-book.cpp
- GodboltId:a6qqbWKMs
- Book: lst-0105-book.cpp
- Godbolt: lst-0105-godb.cpp, https://godbolt.org/z/a6qqbWKMs
- GodboltId:McqfcWb8j
- Book: lst-0106-book.cpp
- Godbolt: lst-0106-godb.cpp, https://godbolt.org/z/McqfcWb8j
- GodboltId:P9z8n8v16
- Book: lst-0107-book.cpp
- Godbolt: lst-0107-godb.cpp, https://godbolt.org/z/P9z8n8v16
- Listing 6.5: Verwenden Sie den !-Operator, um den Zustand des Streams zu prüfen.
- Book: lst-0108-book.cpp
- Godbolt: lst-0108-godb.cpp, https://godbolt.org/z/ssW3eKEGq
- Listing 6.6: Verwenden Sie Streammanipulatoren aus
, um das Format der Ausgabe zu beeinflussen. - Book: lst-0109-book.cpp
- Godbolt: lst-0109-godb.cpp, https://godbolt.org/z/EcnWz3r3j
- Listing 6.7: In einem »array« speichern Sie eine feste Anzahl Elemente.
- Book: lst-0112-book.cpp
- Godbolt: lst-0112-godb.cpp, https://godbolt.org/z/cd1d1W7T1
- Listing 6.8: Die Arraygröße muss konstant sein.
- Book: lst-0113-book.cpp
- Godbolt: lst-0113-godb.cpp, https://godbolt.org/z/zfe7dM4ex
- Listing 6.9: Wenn Sie eine Arraydefinition mehrfach verwenden müssen, dann verwenden Sie »using«.
- Book: lst-0114-book.cpp
- Godbolt: lst-0114-godb.cpp, https://godbolt.org/z/a4zxbd99z
- GodboltId:T9jsEoMj4
- Book: lst-0115-book.cpp
- Godbolt: lst-0115-godb.cpp, https://godbolt.org/z/T9jsEoMj4
- Listing 6.10: Die einfachste Iteration benutzt eine bereichsbasierte »for«-Schleife.
- Book: lst-0116-book.cpp
- Godbolt: lst-0116-godb.cpp, https://godbolt.org/z/hhhavG5he
- Listing 6.11: Der Zugriff auf die Elemente per Index
- Book: lst-0117-book.cpp
- Godbolt: lst-0117-godb.cpp, https://godbolt.org/z/xcKM7v1Eo
- Listing 6.12: Der Einsatz von Iteratoren für eine Schleife
- Book: lst-0118-book.cpp
- Godbolt: lst-0118-godb.cpp, https://godbolt.org/z/1WG8zvhYe
- Listing 6.13: Zählen mit einem Algorithmus
- Book: lst-0119-book.cpp
- Godbolt: lst-0119-godb.cpp, https://godbolt.org/z/4G67rso8T
- Listing 7.1: Funktionen verwenden
- Book: lst-0127-book.cpp
- Godbolt: lst-0127-godb.cpp, https://godbolt.org/z/5ssc6W5o6
- Listing 7.2: Verschiedene Rückgabetypen von Funktionen
- Book: lst-0128-book.cpp
- Listing 7.3: Parameter werden zunächst als Wert übergeben.
- Book: lst-0129-book.cpp
- Godbolt: lst-0129-godb.cpp, https://godbolt.org/z/8zcvMdM3b
- Listing 7.4: Als Referenzparameter fügen Sie ein »&« hinzu.
- Book: lst-0130-book.cpp
- Godbolt: lst-0130-godb.cpp, https://godbolt.org/z/63dTshz3Y
- Listing 7.5: Konstante Referenzen als Parameter können Sie für jeden Aufruf verwenden.
- Book: lst-0131-book.cpp
- Godbolt: lst-0131-godb.cpp, https://godbolt.org/z/dcKnx3Pno
- GodboltId:fTvT5sKqY
- Book: lst-0133-book.cpp
- Godbolt: lst-0133-godb.cpp, https://godbolt.org/z/fTvT5sKqY
- GodboltId:caExoc36Y
- Book: lst-0134-book.cpp
- Godbolt: lst-0134-godb.cpp, https://godbolt.org/z/caExoc36Y
- Listing 7.6: Verschiedene Definitionen von Funktionen
- Book: lst-0135-book.cpp
- Listing 7.7: Eine Vorwärtsdeklaration ohne Funktionskörper
- Book: lst-0136-book.cpp
- Listing 7.8: Hier finden einige Umwandlungen statt. Die Umwandlungen können auf Ihrem System anders aussehen.
- Book: lst-0138-book.cpp
- Godbolt: lst-0138-godb.cpp, https://godbolt.org/z/6hWvqhY7W
- Listing 7.9: Die Funktionen »print« und »add« wurden für mehrere Typen überladen.
- Book: lst-0140-book.cpp
- Godbolt: lst-0140-godb.cpp, https://godbolt.org/z/9YcPraT15
- GodboltId:58cTfvYhe
- Book: lst-0143-book.cpp
- Godbolt: lst-0143-godb.cpp, https://godbolt.org/z/58cTfvYhe
- GodboltId:evGqG1oqa
- Book: lst-0144-book.cpp
- Godbolt: lst-0144-godb.cpp, https://godbolt.org/z/evGqG1oqa
- Listing 7.10: Defaultparameter wirken wie mehrere Überladungen.
- Book: lst-0147-book.cpp
- Godbolt: lst-0147-godb.cpp, https://godbolt.org/z/fjc37rvEr
- Listing 7.11: Alternative Syntax für Funktionsdeklarationen mit nachgestelltem Rückgabetyp
- Book: lst-0152-book.cpp
- Listing 7.12: Seit C++14 können Sie den Rückgabetyp durch den Compiler ermitteln lassen.
- Book: lst-0153-book.cpp
- Godbolt: lst-0153-godb.cpp, https://godbolt.org/z/6d5fxn9ed
- GodboltId:dMvqG85fr
- Book: lst-0157-book.cpp
- Godbolt: lst-0157-godb.cpp, https://godbolt.org/z/dMvqG85fr
- GodboltId:8Gdso36zf
- Book: lst-0158-book.cpp
- Godbolt: lst-0158-godb.cpp, https://godbolt.org/z/8Gdso36zf
- Listing 8.1: Berechnet alle Primzahlen in einem von Benutzern bestimmten Bereich
- Book: lst-0159-book.cpp
- Godbolt: lst-0159-godb.cpp, https://godbolt.org/z/3hf7h67Pe
- Listing 8.2: Dieses »for« bezieht sich auf nur eine Anweisung.
- Book: lst-0160-book.cpp
- Listing 8.3: Ein Anweisungsblock wird in { und } eingeschlossen.
- Book: lst-0161-book.cpp
- Listing 8.4: Wo Anweisungen erlaubt sind, können Sie auch einen Block erstellen.
- Book: lst-0162-book.cpp
- Listing 8.5: Zweimal »ergebnis« als neue Variable in einem Block geht nicht.
- Book: lst-0163-book.cpp
- Listing 8.6: Sehr viele Variablen sind auch nicht gut.
- Book: lst-0164-book.cpp
- Listing 8.7: Leere Anweisungen, wohin das Auge schaut
- Book: lst-0165-book.cpp
- Listing 8.8: Mit auto können Sie auch mehrere Variablen gleichzeitig initialisieren.
- Book: lst-0172-book.cpp
- Godbolt: lst-0172-godb.cpp, https://godbolt.org/z/G7P4ErTE1
- GodboltId:YTTE96rfc
- Book: lst-0173-book.cpp
- Godbolt: lst-0173-godb.cpp, https://godbolt.org/z/YTTE96rfc
- Listing 8.9: Dies sind alles Ausdrücke, die als Anweisung eingesetzt werden.
- Book: lst-0174-book.cpp
- Listing 8.10: Diese if-Anweisungen enthalten Initialisierer.
- Book: lst-0180-book.cpp
- Godbolt: lst-0180-godb.cpp, https://godbolt.org/z/d6PscKx4M
- Listing 8.11: Der Compiler kann die Bedingung zur Compilezeit berechnen.
- Book: lst-0181-book.cpp
- Godbolt: lst-0181-godb.cpp, https://godbolt.org/z/Ycse4EWav
- Listing 8.12: Die Schleife wird 100-mal durchlaufen.
- Book: lst-0182-book.cpp
- Godbolt: lst-0182-godb.cpp, https://godbolt.org/z/Gc53z6K1W
- Listing 8.13: Der Rumpf einer »do-while«-Schleife wird mindestens einmal ausgeführt.
- Book: lst-0184-book.cpp
- Godbolt: lst-0184-godb.cpp, https://godbolt.org/z/6hh5KhExM
- Listing 8.14: Summe mit einer »for«-Schleife
- Book: lst-0185-book.cpp
- Godbolt: lst-0185-godb.cpp, https://godbolt.org/z/7foYcMMaz
- Listing 8.15: »for«-Schleife mit leerem Initialisierungsteil
- Book: lst-0186-book.cpp
- Godbolt: lst-0186-godb.cpp, https://godbolt.org/z/185ha3q3f
- Listing 8.16: Schleifen ohne Bedingung müssen irgendwie anders beendet werden.
- Book: lst-0187-book.cpp
- Listing 8.17: Die bereichsbasierte »for«-Schleife erkennen Sie an dem Doppelpunkt.
- Book: lst-0188-book.cpp
- Listing 8.18: Jeder »case« deckt einen Fall ab, und nirgendwo wurde das »break« vergessen.
- Book: lst-0189-book.cpp
- Godbolt: lst-0189-godb.cpp, https://godbolt.org/z/5oe38obPr
- Listing 8.19: Sehr selten gibt es »case«-Blöcke ohne »break«, noch seltener sinnvolle.
- Book: lst-0190-book.cpp
- Godbolt: lst-0190-godb.cpp, https://godbolt.org/z/jaMTcshEf
- Listing 8.20: Mit break beenden Sie eine Schleife vorzeitig.
- Book: lst-0191-book.cpp
- Godbolt: lst-0191-godb.cpp, https://godbolt.org/z/75h9Y95vf
- Listing 8.21: Mit »return« wird die aktuelle Funktion verlassen. Falls nötig, geben Sie einen Wert für die Rückgabe mit an.
- Book: lst-0192-book.cpp
- Godbolt: lst-0192-godb.cpp, https://godbolt.org/z/5ddxa9v1j
- Listing 8.22: Vermeiden Sie goto-Anweisungen.
- Book: lst-0193-book.cpp
- Godbolt: lst-0193-godb.cpp, https://godbolt.org/z/ohd5Pr8fb
- Listing 8.23: Eine Funktion weniger, aber ein Label und zwei »goto«-Anweisungen mehr.
- Book: lst-0194-book.cpp
- Godbolt: lst-0194-godb.cpp, https://godbolt.org/z/b361eeba3
- Listing 8.24: Als Ausblick hier Ihre erste Exception-Behandlung mit »try« und »catch«
- Book: lst-0195-book.cpp
- Godbolt: lst-0195-godb.cpp, https://godbolt.org/z/cjfG7bc33
- Listing 9.1: Typen von Ausdrücken sind wichtig, weil damit entschieden wird, wie es weitergeht.
- Book: lst-0196-book.cpp
- Godbolt: lst-0196-godb.cpp, https://godbolt.org/z/E1aGdox6q
- GodboltId:EY5K6Wsr3
- Book: lst-0203-book.cpp
- Godbolt: lst-0203-godb.cpp, https://godbolt.org/z/EY5K6Wsr3
- GodboltId:K9c913had
- Book: lst-0204-book.cpp
- Godbolt: lst-0204-godb.cpp, https://godbolt.org/z/K9c913had
- Listing 10.1: Reagieren Sie auf viele Zustände mit Rückgabewerten unterschiedlicher Art.
- Book: lst-0210-book.cpp
- Godbolt: lst-0210-godb.cpp, https://godbolt.org/z/K37fMW8fE
- Listing 10.2: Exceptions werden mit »throw« ausgelöst und mit »try-catch« behandelt.
- Book: lst-0211-book.cpp
- Godbolt: lst-0211-godb.cpp, https://godbolt.org/z/sz9hxKozf
- Listing 10.3: Ein »catch« kann auch innerhalb einer Schleife stehen.
- Book: lst-0212-book.cpp
- Listing 10.4: Mit »throw« ohne Parameter werfen Sie die gerade behandelte Ausnahme weiter.
- Book: lst-0213-book.cpp
- Listing 10.5: Sie können auch andere Typen als Ausnahme auslösen.
- Book: lst-0215-book.cpp
- Godbolt: lst-0215-godb.cpp, https://godbolt.org/z/67cd5bhhE
- Listing 10.6: Lassen Sie sich wenigstens den Fehlertyp und -text ausgeben, anstatt Ihr Programm aus »main« herauspurzeln zu lassen.
- Book: lst-0216-book.cpp
- Godbolt: lst-0216-godb.cpp, https://godbolt.org/z/TsP33njar
- Listing 11.1: Die Haupt-Headerdatei der Bibliothek qwort.hpp
- Book: lst-0217-book.cpp
- Godbolt: lst-0217-godb.cpp, https://godbolt.org/z/7nasGjGq6
- Listing 11.2: Die Schnittstellenklasse leitet alle Aufrufe an die Implementierungsklasse weiter.
- Book: lst-0218-book.cpp
- Godbolt: lst-0218-godb.cpp, https://godbolt.org/z/zbcdd1jha
- Listing 11.3: Header der Implementierungsklasse
- Book: lst-0219-book.cpp
- Godbolt: lst-0219-godb.cpp, https://godbolt.org/z/5Tfr6xxa5
- Listing 11.4: Der Header der Implementierungsklasse
- Book: lst-0220-book.cpp
- Godbolt: lst-0220-godb.cpp, https://godbolt.org/z/41sPszG1G
- Listing 11.5: So ziemlich das einfachste Beispielprogramm der Bibliothek
- Book: lst-0221-book.cpp
- Godbolt: lst-0221-godb.cpp, https://godbolt.org/z/Gvcj6hhYf
- Listing 12.1: Listing 12.1 Einen eigenen Datentyp erzeugen Sie mit »struct«.
- Book: lst-0222-book.cpp
- Godbolt: lst-0222-godb.cpp, https://godbolt.org/z/8YqoTEx58
- Listing 12.2: Listing 12.2 Die Deklaration einer Klasse nennt erst mal nur ihren Namen, die Definition enthält alle ihre Elemente.
- Book: lst-0223-book.cpp
- Godbolt: lst-0223-godb.cpp, https://godbolt.org/z/jPqn7c3T8
- Listing 12.3: Listing 12.3 Mit designierten Initialisierern geben Sie die zu setzenden Elemente an.
- Book: lst-0226-book.cpp
- Godbolt: lst-0226-godb.cpp, https://godbolt.org/z/e9Wshbx3q
- GodboltId:xnT7voqen
- Book: lst-0227-book.cpp
- Godbolt: lst-0227-godb.cpp, https://godbolt.org/z/xnT7voqen
- GodboltId:YYfxMdfP8
- Book: lst-0228-book.cpp
- Godbolt: lst-0228-godb.cpp, https://godbolt.org/z/YYfxMdfP8
- Listing 12.4: Listing 12.4 Hier ist die Angabe von Person beim return nötig.
- Book: lst-0231-book.cpp
- Godbolt: lst-0231-godb.cpp, https://godbolt.org/z/KvTx3rPs5
- Listing 12.5: Listing 12.5 Methoden packen Daten und Verhalten zusammen.
- Book: lst-0232-book.cpp
- Godbolt: lst-0232-godb.cpp, https://godbolt.org/z/M1ozTorEz
- Listing 12.6: Listing 12.6 Die Methode »gruss()« verwendet Felder — mittels »this« ist es immer das zum aufgerufenen Objekt gehörende Feld.
- Book: lst-0233-book.cpp
- Listing 12.7: Listing 12.7 So trennen Sie Methoden und Daten voneinander.
- Book: lst-0235-book.cpp
- GodboltId:hEvqWqqc6
- Book: lst-0236-book.cpp
- Godbolt: lst-0236-godb.cpp, https://godbolt.org/z/hEvqWqqc6
- Listing 12.8: Listing 12.8 »drucke« nimmt einen Stream als Argument.
- Book: lst-0239-book.cpp
- Godbolt: lst-0239-godb.cpp, https://godbolt.org/z/bjWKjaeaK
- Listing 12.9: Listing 12.9 Sie können den Standardoperator für die Ausgabe überladen.
- Book: lst-0240-book.cpp
- Listing 12.10: Listing 12.10 Die Ausgabe mit << erreichen Sie durch Überladung einer freien Funktion.
- Book: lst-0242-book.cpp
- Godbolt: lst-0242-godb.cpp, https://godbolt.org/z/bEdfWqqnn
- Listing 12.11: Listing 12.11 Methoden können auch inline definiert werden.
- Book: lst-0243-book.cpp
- Godbolt: lst-0243-godb.cpp, https://godbolt.org/z/zf9Tc4ahs
- Listing 12.12: Listing 12.12 So definieren Sie einen Konstruktor.
- Book: lst-0248-book.cpp
- Listing 12.13: Listing 12.13 Auch mehrere Konstruktoren sind möglich.
- Book: lst-0250-book.cpp
- Godbolt: lst-0250-godb.cpp, https://godbolt.org/z/cqoTsWbhW
- Listing 12.14: Listing 12.14 Membervariablen können mit Defaultwerten ausgestattet werden.
- Book: lst-0251-book.cpp
- Godbolt: lst-0251-godb.cpp, https://godbolt.org/z/vzneMWW9r
- Listing 12.15: Listing 12.15 Ein Konstruktor kann einen Teil der Initialisierung an einen anderen Konstruktor weiterreichen.
- Book: lst-0252-book.cpp
- Godbolt: lst-0252-godb.cpp, https://godbolt.org/z/83efx7Gex
- Listing 12.16: Listing 12.16 Auch ein Konstruktor kann mit Defaultparametern überladen werden.
- Book: lst-0253-book.cpp
- Godbolt: lst-0253-godb.cpp, https://godbolt.org/z/Exh4PnMTE
- Listing 12.17: Listing 12.17 Ein Konstruktor mit allen vorbesetzten Argumenten wird zum Defaultkonstruktor.
- Book: lst-0255-book.cpp
- Godbolt: lst-0255-godb.cpp, https://godbolt.org/z/vb1Wsr5d3
- Listing 12.18: Listing 12.18 Rufen Sie keine initialisierende Methode im Konstruktorkörper auf.
- Book: lst-0256-book.cpp
- Godbolt: lst-0256-godb.cpp, https://godbolt.org/z/osM9ncPzr
- Listing 12.19: Listing 12.19 Zugriff von außen auf die Datenfelder eines Typs
- Book: lst-0258-book.cpp
- Listing 12.20: Listing 12.20 Teilen Sie einen Typ mit »public« und »private« in mehrere Bereiche auf.
- Book: lst-0259-book.cpp
- Godbolt: lst-0259-godb.cpp, https://godbolt.org/z/zrE55vWq3
- Listing 12.21: Listing 12.21 »class« beginnt mit privater Sichtbarkeit.
- Book: lst-0260-book.cpp
- Godbolt: lst-0260-godb.cpp, https://godbolt.org/z/e6rqbq3bE
- Listing 12.22: Listing 12.22 Teile der Daten sind privat.
- Book: lst-0261-book.cpp
- Godbolt: lst-0261-godb.cpp, https://godbolt.org/z/Pr76Y55P4
- Listing 12.23: Listing 12.23 Mit »= default« lassen Sie den Compiler Code erzeugen.
- Book: lst-0262-book.cpp
- Godbolt: lst-0262-godb.cpp, https://godbolt.org/z/PaG9nTs7s
- Listing 12.24: Listing 12.24 Eigene Datentypen können vor Fehlern schützen — dies ist der erste Schritt dazu.
- Book: lst-0263-book.cpp
- Godbolt: lst-0263-godb.cpp, https://godbolt.org/z/r5EsnnsEG
- Listing 12.25: Listing 12.25 Wenn alle »return«-Anweisungen dieselbe Variable zurückliefern, kann der Compiler eine Kopie immer vermeiden.
- Book: lst-0272-book.cpp
- Godbolt: lst-0272-godb.cpp, https://godbolt.org/z/T7afh4vxz
- Listing 12.26: Listing 12.26 Mit »explicit« verhindern Sie automatische Typumwandlung.
- Book: lst-0281-book.cpp
- Listing 12.27: Listing 12.27 »Year« hat nun kein »value()« mehr und benötigt dafür andere Methoden.
- Book: lst-0291-book.cpp
- Godbolt: lst-0291-godb.cpp, https://godbolt.org/z/EPz4Kd6jP
- Listing 12.28: Listing 12.28 Gibt »advance« das Objekt selbst zurück, können Sie danach eine weitere Methode aufrufen.
- Book: lst-0292-book.cpp
- Listing 12.29: Listing 12.29 Eine fließende Programmierschnittstelle erlaubt zuweilen übersichtlichen Code.
- Book: lst-0293-book.cpp
- Listing 12.30: Listing 12.30 Der eigentlich interne Typ »int« ist Teil der Schnittstelle der Klasse geworden.
- Book: lst-0294-book.cpp
- Godbolt: lst-0294-godb.cpp, https://godbolt.org/z/sP3W8jx6E
- Listing 12.31: Listing 12.31 Mit »using« können Sie Typaliase einführen, mit denen sich Interfaces leichter pflegen lassen als mit den Typen selbst.
- Book: lst-0295-book.cpp
- Godbolt: lst-0295-godb.cpp, https://godbolt.org/z/r3xaPv5Mr
- Listing 12.32: Listing 12.32 Auch die Standardbibliothek enthält viele praktische Typaliase.
- Book: lst-0296-book.cpp
- Godbolt: lst-0296-godb.cpp, https://godbolt.org/z/vjTWjfKKz
- Listing 12.33: Listing 12.33 Bei der Initialisierung einer Variablen kann der Compiler den Typ ermitteln.
- Book: lst-0300-book.cpp
- Godbolt: lst-0300-godb.cpp, https://godbolt.org/z/Wh71cf7j1
- Listing 12.34: Listing 12.34 Typ-Deduktion mit »auto« können Sie mit einem Concept weiter einschränken.
- Book: lst-0301-book.cpp
- Godbolt: lst-0301-godb.cpp, https://godbolt.org/z/hT8o3dqrK
- Listing 12.35: Listing 12.35 Wenn Sie »auto« mit »&« anreichern, erhalten Sie eine veränderbare Referenz.
- Book: lst-0302-book.cpp
- Godbolt: lst-0302-godb.cpp, https://godbolt.org/z/ro6fdsvT9
- Listing 12.36: Listing 12.36 Um einen eigenen Datentyp in einen »vector« zu packen, muss dieser nicht viele Bedingungen erfüllen.
- Book: lst-0306-book.cpp
- Godbolt: lst-0306-godb.cpp, https://godbolt.org/z/8ejPs6zr6
- Listing 12.37: Listing 12.37 Für einen »set« eines eigenen Datentyps müssen Sie »operator<« überschreiben.
- Book: lst-0307-book.cpp
- Godbolt: lst-0307-godb.cpp, https://godbolt.org/z/vrdKPvh7f
- GodboltId:M81MjePh5
- Book: lst-0308-book.cpp
- Godbolt: lst-0308-godb.cpp, https://godbolt.org/z/M81MjePh5
- Listing 13.1: Sie definieren einen Namensraum mit »namespace«.
- Book: lst-0311-book.cpp
- Godbolt: lst-0311-godb.cpp, https://godbolt.org/z/T1ohsxbje
- Listing 13.2: In getrennten Namensräumen können Sie die gleichen Operatoren definieren.
- Book: lst-0315-book.cpp
- Listing 13.3: Ein anonymer Namensraum macht Definitionen lokal für die aktuelle Datei.
- Book: lst-0316-book.cpp
- Godbolt: lst-0316-godb.cpp, https://godbolt.org/z/M6EnPT3Gr
- GodboltId:cTYhMfo5W
- Book: lst-0317-book.cpp
- Godbolt: lst-0317-godb.cpp, https://godbolt.org/z/cTYhMfo5W
- Listing 13.4: Alle Instanzen teilen sich ihre »static«-Datenfelder und -Methoden.
- Book: lst-0319-book.cpp
- Godbolt: lst-0319-godb.cpp, https://godbolt.org/z/n4e8xdEGj
- GodboltId:b9arcEMM1
- Book: lst-0321-book.cpp
- Godbolt: lst-0321-godb.cpp, https://godbolt.org/z/b9arcEMM1
- Listing 13.5: Eine lokale statische Variable wird einmal initialisiert und danach wiederverwendet.
- Book: lst-0322-book.cpp
- Godbolt: lst-0322-godb.cpp, https://godbolt.org/z/h5qond6db
- Listing 13.6: Das Meyers-Singleton
- Book: lst-0323-book.cpp
- Listing 13.7: Die Bezeichner eines inline namespace gehen zusätzlich in seinen umgebenden Namensraum.
- Book: lst-0324-book.cpp
- Godbolt: lst-0324-godb.cpp, https://godbolt.org/z/115M1csEE
- GodboltId:WTWxYa3rd
- Book: lst-0334-book.cpp
- Godbolt: lst-0334-godb.cpp, https://godbolt.org/z/WTWxYa3rd
- Listing 13.8: Lokale Konstanten einer Datei passen gut in einen anonymen Namensraum.
- Book: lst-0339-book.cpp
- Godbolt: lst-0339-godb.cpp, https://godbolt.org/z/q3Ga7hTGa
- GodboltId:9Esx13h9r
- Book: lst-0340-book.cpp
- Godbolt: lst-0340-godb.cpp, https://godbolt.org/z/9Esx13h9r
- Listing 13.9: Obwohl der Rückgabetyp hier mit »const« markiert ist, wirkt es sich nicht aus, denn es wird immer kopiert.
- Book: lst-0341-book.cpp
- Godbolt: lst-0341-godb.cpp, https://godbolt.org/z/erv34b67c
- Listing 13.10: Konstante Referenzen in Rückgaben
- Book: lst-0342-book.cpp
- Godbolt: lst-0342-godb.cpp, https://godbolt.org/z/v1TP6aYxT
- Listing 13.11: Referenzen können konstant und nicht konstant zurückgegeben werden.
- Book: lst-0343-book.cpp
- Godbolt: lst-0343-godb.cpp, https://godbolt.org/z/rMrKbrdWe
- GodboltId:hsWrnaEea
- Book: lst-0346-book.cpp
- Godbolt: lst-0346-godb.cpp, https://godbolt.org/z/hsWrnaEea
- Listing 13.12: Manche Ausdrücke müssen zur Übersetzungszeit bekannt sein.
- Book: lst-0347-book.cpp
- Godbolt: lst-0347-godb.cpp, https://godbolt.org/z/5b3bvKd9r
- Listing 13.13: Ob der Compiler eine Konstante in einem konstanten Ausdruck verwenden kann, ist nicht immer sofort ersichtlich.
- Book: lst-0348-book.cpp
- Godbolt: lst-0348-godb.cpp, https://godbolt.org/z/MEGfeanPP
- Listing 13.14: Mit »constexpr« sieht der Compiler, wann ein Ausdruck nicht früh berechenbar ist.
- Book: lst-0350-book.cpp
- Godbolt: lst-0350-godb.cpp, https://godbolt.org/z/ba9rv6P51
- GodboltId:Krjh8M3aP
- Book: lst-0351-book.cpp
- Godbolt: lst-0351-godb.cpp, https://godbolt.org/z/Krjh8M3aP
- GodboltId:KPc6ExMaY
- Book: lst-0352-book.cpp
- Godbolt: lst-0352-godb.cpp, https://godbolt.org/z/KPc6ExMaY
- Listing 13.15: Mit »if constexpr« können Sie zur Übersetzungszeit entscheiden, welcher Code ausgeführt wird.
- Book: lst-0354-book.cpp
- Godbolt: lst-0354-godb.cpp, https://godbolt.org/z/zMbnYzo17
- Listing 13.16: »if constexpr« funktioniert auch mit »else«
- Book: lst-0355-book.cpp
- Godbolt: lst-0355-godb.cpp, https://godbolt.org/z/eo468MvMo
- GodboltId:44KMf1fWr
- Book: lst-0356-book.cpp
- Godbolt: lst-0356-godb.cpp, https://godbolt.org/z/44KMf1fWr
- Listing 13.17: Mit »consteval« können Sie Funktionen zur Übersetzungszeit ausführen lassen.
- Book: lst-0357-book.cpp
- Godbolt: lst-0357-godb.cpp, https://godbolt.org/z/8rr4WKo8d
- Listing 13.18: Auch komplexere Funktionen können mit »consteval« zur Übersetzungszeit berechnet werden.
- Book: lst-0358-book.cpp
- Godbolt: lst-0358-godb.cpp, https://godbolt.org/z/KGn9ob8on
- Listing 13.19: Der Compiler stellt fest, ob der Aufruf im Context zur Compilezeit berechnet werden kann.
- Book: lst-0359-book.cpp
- Godbolt: lst-0359-godb.cpp, https://godbolt.org/z/7KWqTPo1K
- Listing 13.20: »mutable« macht ein Datenfeld in const-Methoden veränderbar.
- Book: lst-0361-book.cpp
- Godbolt: lst-0361-godb.cpp, https://godbolt.org/z/sPorKnEbd
- Listing 13.21: »const« mit Containern
- Book: lst-0362-book.cpp
- Godbolt: lst-0362-godb.cpp, https://godbolt.org/z/GE5v6Ea8x
- Listing 13.22: x und y können irgendwie von außen verändert werden.
- Book: lst-0363-book.cpp
- Listing 14.1: Solitäre Tests testen nur eine Komponente, Helferklassen werden untergeschoben.
- Book: lst-0364-book.cpp
- Godbolt: lst-0364-godb.cpp, https://godbolt.org/z/a83sf9h8E
- Listing 14.2: Soziale Tests testen das Zusammenspiel der Komponenten mit.
- Book: lst-0365-book.cpp
- Godbolt: lst-0365-godb.cpp, https://godbolt.org/z/fsroE4seh
- GodboltId:4PeYrc8jo
- Book: lst-0366-book.cpp
- Godbolt: lst-0366-godb.cpp, https://godbolt.org/z/4PeYrc8jo
- GodboltId:Y9exe7rqT
- Book: lst-0367-book.cpp
- Godbolt: lst-0367-godb.cpp, https://godbolt.org/z/Y9exe7rqT
- Listing 14.3: In der Datei »fib.cpp« ist eine freie Funktion, die Sie testen wollen.
- Book: lst-0368-book.cpp
- Godbolt: lst-0368-godb.cpp, https://godbolt.org/z/Ex6Mv6xcz
- GodboltId:ba7e7s8qK
- Book: lst-0369-book.cpp
- Godbolt: lst-0369-godb.cpp, https://godbolt.org/z/ba7e7s8qK
- Listing 14.4: Die Haupt-Headerdatei der Bibliothek qwort.hpp
- Book: lst-0375-book.cpp
- Godbolt: lst-0375-godb.cpp, https://godbolt.org/z/5ajrvGvcW
- Listing 14.5: Öffentliche Schnittstelle nur fürs Testen
- Book: lst-0376-book.cpp
- Listing 14.6: Dieses Testmodul testet qwort.cpp.
- Book: lst-0377-book.cpp
- Godbolt: lst-0377-godb.cpp, https://godbolt.org/z/Y98jq1eGx
- Listing 14.7: Hier wird die Testsuite manuell zusammengebaut.
- Book: lst-0387-book.cpp
- Godbolt: lst-0387-godb.cpp, https://godbolt.org/z/TfMnK1Tnn
- Listing 14.8: Eine Testfunktion mit einem Parameter kann mit Testdaten aufgerufen werden.
- Book: lst-0392-book.cpp
- Godbolt: lst-0392-godb.cpp, https://godbolt.org/z/q8E6WMano
- Listing 15.1: Der gemeinsame Vorfahre unserer Hilfsklassen »Year«, »Month« und »Day«
- Book: lst-0398-book.cpp
- Godbolt: lst-0398-godb.cpp, https://godbolt.org/z/hhGo46z5a
- Listing 15.2: Der doppelte Code der Hilfsklassen ist nun verschwunden.
- Book: lst-0399-book.cpp
- Godbolt: lst-0399-godb.cpp, https://godbolt.org/z/eYY1js4Te
- Listing 15.3: So verwendet »Date« die neuen Klassen.
- Book: lst-0400-book.cpp
- Godbolt: lst-0400-godb.cpp, https://godbolt.org/z/9rY7qhK89
- Listing 15.4: Nun ist »ostern« eine Methode von »Year«.
- Book: lst-0401-book.cpp
- Godbolt: lst-0401-godb.cpp, https://godbolt.org/z/Wjsvv6Gdv
- Listing 15.5: Alle Komponenten haben eine weiße Farbe, nur der Druckknopf wird grau.
- Book: lst-0402-book.cpp
- Listing 15.6: Was gibt »print« aus? Die Methode »wert« kommt öfter vor.
- Book: lst-0403-book.cpp
- Godbolt: lst-0403-godb.cpp, https://godbolt.org/z/476G1xzKr
- Listing 15.7: Mit »virtual« markierte Methoden werden zur Laufzeit aufgelöst.
- Book: lst-0404-book.cpp
- Godbolt: lst-0404-godb.cpp, https://godbolt.org/z/aj8cnox4f
- Listing 15.8: Die abgeleitete Klasse erbt Methoden, aber nicht Konstruktoren der Elternklasse.
- Book: lst-0406-book.cpp
- Godbolt: lst-0406-godb.cpp, https://godbolt.org/z/57vexTPnn
- Listing 15.9: Mit »using« importieren Sie alle Konstruktoren der Elternklasse.
- Book: lst-0407-book.cpp
- Godbolt: lst-0407-godb.cpp, https://godbolt.org/z/8b3Yvnjh4
- Listing 15.10: Die Übergabe als Wert kopiert nur den gemeinsamen Teil des Typs.
- Book: lst-0408-book.cpp
- Godbolt: lst-0408-godb.cpp, https://godbolt.org/z/jfocr7qf1
- Listing 15.11: Die abgeleitete Klasse als Argumenttyp zu einer Funktion erlaubt nicht den Aufruf mit einer Variable der Basisklasse als Wertparameter.
- Book: lst-0409-book.cpp
- Godbolt: lst-0409-godb.cpp, https://godbolt.org/z/j9Er3s1xo
- Listing 15.12: Die Übergabe als Referenz verändert die Instanz nicht.
- Book: lst-0410-book.cpp
- Godbolt: lst-0410-godb.cpp, https://godbolt.org/z/3nvrvrrYW
- Listing 16.1: Welche Variablen können Sie bei »x1« bis »x5« einsetzen?
- Book: lst-0411-book.cpp
- Godbolt: lst-0411-godb.cpp, https://godbolt.org/z/K7TqWrjbo
- Listing 16.2: Wenn Sie eine Funktion mit einem Parameter aufrufen, für den der Compiler zur Umwandlung einen Konstruktor aufruft, erzeugt er einen Tempwert.
- Book: lst-0412-book.cpp
- Godbolt: lst-0412-godb.cpp, https://godbolt.org/z/TvKP7Ghvh
- Listing 16.3: Ein Destruktor wird beim Entfernen eines Objekts ausgeführt.
- Book: lst-0413-book.cpp
- Godbolt: lst-0413-godb.cpp, https://godbolt.org/z/qzbnK9v1o
- Listing 16.4: Hier werden viele Objekte erzeugt und zerstört.
- Book: lst-0414-book.cpp
- Godbolt: lst-0414-godb.cpp, https://godbolt.org/z/oY953arPj
- Listing 16.5: Diese Ausgabe zeigt, wann Objekte erzeugt und zerstört werden.
- Book: lst-0415-book.cpp
- Listing 16.6: Ein einfaches Beispiel für eine C-Schnittstelle zu einer Ressource
- Book: lst-0416-book.cpp
- Godbolt: lst-0416-godb.cpp, https://godbolt.org/z/54dzsb31z
- Listing 16.7: Wenn Sie eine Ressource schließen müssen, dann eignet sich dafür der Destruktor.
- Book: lst-0417-book.cpp
- Godbolt: lst-0417-godb.cpp, https://godbolt.org/z/93PT8W9hY
- Listing 16.8: Der Konstruktor initialisiert oder löst eine Exception aus.
- Book: lst-0418-book.cpp
- Listing 16.9: Beispiele für Yoda-Bedingungen mit »==«
- Book: lst-0420-book.cpp
- Listing 16.10: Eine Yoda-Bedingung mit einem Methodenaufruf
- Book: lst-0421-book.cpp
- Godbolt: lst-0421-godb.cpp, https://godbolt.org/z/c3695v4r8
- Listing 16.11: Der Konstruktor von »KannWerfen« kann mit einer Exception beendet werden.
- Book: lst-0422-book.cpp
- Godbolt: lst-0422-godb.cpp, https://godbolt.org/z/vaP4bdvns
- Listing 16.12: Teilweise initialisierte Datenfelder werden auch bei einer Exception weggeräumt.
- Book: lst-0423-book.cpp
- Listing 16.13: Die Übergabe als Wert erstellt Objekte mit dem vom Compiler erzeugten Kopierkonstruktor.
- Book: lst-0424-book.cpp
- Godbolt: lst-0424-godb.cpp, https://godbolt.org/z/KGEe7hj1b
- Listing 16.14: Der Kopierkonstruktor bekommt eine konstante Referenz der Klasse als Argument.
- Book: lst-0425-book.cpp
- Godbolt: lst-0425-godb.cpp, https://godbolt.org/z/j67W4zPWE
- Listing 16.15: Kopie und Zuweisung
- Book: lst-0426-book.cpp
- Listing 16.16: Das Schema für die Implementierung eines eigenen Zuweisungsoperators
- Book: lst-0429-book.cpp
- Listing 16.17: »const«-Datenelement zunächst ohne Zuweisungsoperator
- Book: lst-0430-book.cpp
- Listing 16.18: Mit »= delete« entfernen Sie Operationen manuell.
- Book: lst-0431-book.cpp
- Godbolt: lst-0431-godb.cpp, https://godbolt.org/z/acWjozE15
- Listing 16.19: Mit den gelöschten Funktionen verhindert der Compiler eine fehlerhafte Benutzung der Klasse.
- Book: lst-0432-book.cpp
- Godbolt: lst-0432-godb.cpp, https://godbolt.org/z/PfW8oKPK4
- Listing 16.20: Die Klasse enthält wahrscheinlich große Datenmengen, die teuer zu kopieren sind. Doch was wird hier kopiert?
- Book: lst-0433-book.cpp
- Godbolt: lst-0433-godb.cpp, https://godbolt.org/z/MT3MPs3rE
- Listing 16.21: Implementierung der beiden Verschiebeoperationen
- Book: lst-0434-book.cpp
- Godbolt: lst-0434-godb.cpp, https://godbolt.org/z/6xjeYWe7c
- Listing 16.22: Infix-, Funktions- und Methodenschreibweise für Operatoren
- Book: lst-0440-book.cpp
- Godbolt: lst-0440-godb.cpp, https://godbolt.org/z/fefP5d343
- Listing 16.23: Eine »friend«-Funktion ist keine Methode, auch wenn sie innerhalb der Klasse steht oder dort definiert ist.
- Book: lst-0441-book.cpp
- Godbolt: lst-0441-godb.cpp, https://godbolt.org/z/Wvr3aK75G
- Listing 16.24: Ein beinahe mit allen Operatoren voll ausgerüsteter Datentyp
- Book: lst-0442-book.cpp
- Godbolt: lst-0442-godb.cpp, https://godbolt.org/z/Gf38nTa1q
- Listing 16.25: Sie verwenden den mit Operatoren ausgestatteten Datentyp wie gewohnt.
- Book: lst-0443-book.cpp
- Godbolt: lst-0443-godb.cpp, https://godbolt.org/z/asaYr3ox6
- Listing 16.26: Dieser Datentyp demonstriert die booleschen Operatoren.
- Book: lst-0444-book.cpp
- Godbolt: lst-0444-godb.cpp, https://godbolt.org/z/ojeh8Gzcx
- Listing 16.27: Die Vergleichskategorien enthalten Konstanten für die Rückgabe.
- Book: lst-0446-book.cpp
- Godbolt: lst-0446-godb.cpp, https://godbolt.org/z/KxWb4q8q9
- Listing 16.28: Die Rückgabe von <=> können Sie mit null vergleichen.
- Book: lst-0448-book.cpp
- Listing 16.29: Eine virtuelle Methode, die = 0 ist, nennt man pur virtuell oder abstrakt.
- Book: lst-0449-book.cpp
- Godbolt: lst-0449-godb.cpp, https://godbolt.org/z/f458s99Ga
- Listing 16.30: Mit einem »enum« definieren Sie einen Typ mit eigenem Wertebereich.
- Book: lst-0454-book.cpp
- Godbolt: lst-0454-godb.cpp, https://godbolt.org/z/xhd7s1YhE
- Listing 16.31: In einem »enum« können Sie auch die gewünschten Zahlenwerte angeben.
- Book: lst-0457-book.cpp
- Godbolt: lst-0457-godb.cpp, https://godbolt.org/z/esevnfEM3
- Listing 17.1: Verbieten Sie mit »= delete« vier der großen Fünf.
- Book: lst-0458-book.cpp
- Godbolt: lst-0458-godb.cpp, https://godbolt.org/z/1Ke5W5Pj5
- Listing 17.2: Statt eines rohen Zeigers verwenden Sie ein Standardkonstrukt und definieren keine Operation der Großen Fünf.
- Book: lst-0459-book.cpp
- Godbolt: lst-0459-godb.cpp, https://godbolt.org/z/xMbG771En
- Listing 17.3: In einer Hierarchie mit virtuellen Methoden müssen Sie den Destruktor der Basisklasse definieren und virtuell markieren.
- Book: lst-0460-book.cpp
- Godbolt: lst-0460-godb.cpp, https://godbolt.org/z/1xcqon7dM
- Listing 17.4: shared_ptr ruft immer den richtigen Destruktor auf, virtuell oder nicht.
- Book: lst-0461-book.cpp
- Listing 17.5: Eine RAII-Zeichenpufferklasse
- Book: lst-0463-book.cpp
- Godbolt: lst-0463-godb.cpp, https://godbolt.org/z/9eeG575Wz
- Listing 17.6: Wirft »right« eine Exception, entsteht mit »left« ein Leck.
- Book: lst-0464-book.cpp
- Godbolt: lst-0464-godb.cpp, https://godbolt.org/z/TK3vTv1EM
- Listing 17.7: Korrektes RAII für »StereoImage«
- Book: lst-0465-book.cpp
- Godbolt: lst-0465-godb.cpp, https://godbolt.org/z/cs4eEEGrf
- Listing 17.8: C-API in C++-Code
- Book: lst-0466-book.cpp
- Godbolt: lst-0466-godb.cpp, https://godbolt.org/z/GK4W1nKd4
- Listing 17.9: C-API mit einfachem RAII
- Book: lst-0467-book.cpp
- Godbolt: lst-0467-godb.cpp, https://godbolt.org/z/hqrPjGjnK
- Listing 17.10: C-API mit einfachem RAII, ohne throw
- Book: lst-0468-book.cpp
- Godbolt: lst-0468-godb.cpp, https://godbolt.org/z/5bW9Evorc
- Listing 17.11: Nothrow-new wirft kein »bad_alloc«, sondern liefert »nullptr« zurück.
- Book: lst-0469-book.cpp
- Godbolt: lst-0469-godb.cpp, https://godbolt.org/z/s8KoE4ETs
- Listing 18.1: Mit friend können Sie einer anderen Klasse Zugriff auf Privates erlauben.
- Book: lst-0470-book.cpp
- Godbolt: lst-0470-godb.cpp, https://godbolt.org/z/WqfMGaP71
- Listing 18.2: Die Klasse Tree hat Zugriff auf Privates von Node.
- Book: lst-0471-book.cpp
- Godbolt: lst-0471-godb.cpp, https://godbolt.org/z/dTnxobz6v
- Listing 18.3: Beim Erben können Sie angeben, was sichtbar werden soll.
- Book: lst-0473-book.cpp
- Godbolt: lst-0473-godb.cpp, https://godbolt.org/z/eKbK39nG1
- Listing 18.4: Ererbte Sichtbarkeiten, von außen betrachtet
- Book: lst-0474-book.cpp
- Godbolt: lst-0474-godb.cpp, https://godbolt.org/z/Pxqrjjqs8
- Listing 18.5: Ererbte Sichtbarkeiten für weitere Ableitungen
- Book: lst-0475-book.cpp
- Godbolt: lst-0475-godb.cpp, https://godbolt.org/z/xKEo38c4n
- Listing 18.6: In der Praxis nutzen Kindklassen privat Geerbtes indirekt.
- Book: lst-0476-book.cpp
- Godbolt: lst-0476-godb.cpp, https://godbolt.org/z/zMvWxT854
- Listing 18.7: »Hat-ein«-Beziehung mittels privater Vererbung
- Book: lst-0477-book.cpp
- Godbolt: lst-0477-godb.cpp, https://godbolt.org/z/zzT17q588
- Listing 18.8: »Hat-ein«-Beziehung mittels Mitglied
- Book: lst-0478-book.cpp
- Godbolt: lst-0478-godb.cpp, https://godbolt.org/z/8jGWTqh9z
- Listing 18.9: Eine Signaturklasse hat nur pur virtuelle Methoden.
- Book: lst-0479-book.cpp
- Godbolt: lst-0479-godb.cpp, https://godbolt.org/z/rW4oTPhrG
- Listing 18.10: Eine Signaturklasse macht eine gute Basisklasse.
- Book: lst-0480-book.cpp
- Godbolt: lst-0480-godb.cpp, https://godbolt.org/z/7xf6sxPqG
- Listing 18.11: Eine virtuelle Methode mit Implementierung »= 0« ist abstrakt.
- Book: lst-0481-book.cpp
- Godbolt: lst-0481-godb.cpp, https://godbolt.org/z/G1q964f1M
- Listing 18.12: Multiple Vererbung heißt, mehrere Basisklassen zu haben.
- Book: lst-0483-book.cpp
- Godbolt: lst-0483-godb.cpp, https://godbolt.org/z/MPaYW1v5j
- Listing 18.13: Uhr und Kalender ergeben Uhr mit Kalender.
- Book: lst-0484-book.cpp
- Godbolt: lst-0484-godb.cpp, https://godbolt.org/z/M7TTvaPxx
- GodboltId:a5WxqjxEr
- Book: lst-0485-book.cpp
- Godbolt: lst-0485-godb.cpp, https://godbolt.org/z/a5WxqjxEr
- Listing 18.14: Eine einfache Kalenderklasse
- Book: lst-0486-book.cpp
- Godbolt: lst-0486-godb.cpp, https://godbolt.org/z/oe1hT9McG
- GodboltId:xf1xq8Ts3
- Book: lst-0487-book.cpp
- Godbolt: lst-0487-godb.cpp, https://godbolt.org/z/xf1xq8Ts3
- Listing 18.15: Die Kalenderuhr ist ein Kalender und eine Uhr.
- Book: lst-0488-book.cpp
- Godbolt: lst-0488-godb.cpp, https://godbolt.org/z/rh179GW3j
- GodboltId:P6nzT7EY4
- Book: lst-0489-book.cpp
- Godbolt: lst-0489-godb.cpp, https://godbolt.org/z/P6nzT7EY4
- Listing 18.16: Mit multipler Vererbung kann sich der Wert eines Zeigers ändern.
- Book: lst-0492-book.cpp
- Godbolt: lst-0492-godb.cpp, https://godbolt.org/z/oc7jsbrEK
- Listing 18.17: Das Beobachter-Muster mit multipler Vererbung
- Book: lst-0493-book.cpp
- Godbolt: lst-0493-godb.cpp, https://godbolt.org/z/EnE7Y886M
- Listing 18.18: Ein einfaches Beispiel mit virtueller Vererbung
- Book: lst-0494-book.cpp
- Godbolt: lst-0494-godb.cpp, https://godbolt.org/z/8jYeYPs7W
- Listing 18.19: Effektiv ruft nutzer() hier eine Schwestermethode auf.
- Book: lst-0495-book.cpp
- Godbolt: lst-0495-godb.cpp, https://godbolt.org/z/s9xnn7c5j
- Listing 18.20: Einen literalen Datentyp erstellen Sie mit einem constexpr-Konstruktor.
- Book: lst-0498-book.cpp
- Godbolt: lst-0498-godb.cpp, https://godbolt.org/z/Kvfx9Yeox
- Listing 18.21: Benutzerdefinierte Literale sind besonders nützlich mit literalen Datentypen.
- Book: lst-0499-book.cpp
- Godbolt: lst-0499-godb.cpp, https://godbolt.org/z/r1vYc7r5j
- Listing 19.1: Call-by-Reference als Basis für Polymorphie
- Book: lst-0501-book.cpp
- Godbolt: lst-0501-godb.cpp, https://godbolt.org/z/scqTWvhsv
- Listing 19.2: Die Klasse Buch dient den Akteuren Leser und Bibliothekar.
- Book: lst-0502-book.cpp
- Godbolt: lst-0502-godb.cpp, https://godbolt.org/z/fdh4n5x84
- Listing 19.3: Die Änderungen eines Akteurs spielen sich meist nur noch in einer Klasse ab.
- Book: lst-0503-book.cpp
- Godbolt: lst-0503-godb.cpp, https://godbolt.org/z/Tq9xbGxs4
- Listing 19.4: Folgt nicht dem Open/Closed Principle
- Book: lst-0504-book.cpp
- Godbolt: lst-0504-godb.cpp, https://godbolt.org/z/vxTsveGjT
- Listing 19.5: Folgt dem OCP
- Book: lst-0505-book.cpp
- Godbolt: lst-0505-godb.cpp, https://godbolt.org/z/YWE4bT4zG
- GodboltId:rc67xWWfT
- Book: lst-0506-book.cpp
- Godbolt: lst-0506-godb.cpp, https://godbolt.org/z/rc67xWWfT
- Listing 19.6: Kovarianz für Rückgabetypen
- Book: lst-0507-book.cpp
- Godbolt: lst-0507-godb.cpp, https://godbolt.org/z/Gxh4edc8n
- GodboltId:4536hxvEK
- Book: lst-0510-book.cpp
- Godbolt: lst-0510-godb.cpp, https://godbolt.org/z/4536hxvEK
- Listing 20.1: Zeiger können im Laufe ihres Lebens neue Adressen zugewiesen bekommen.
- Book: lst-0511-book.cpp
- Godbolt: lst-0511-godb.cpp, https://godbolt.org/z/qTxs8bTdz
- Listing 20.2: Eine Rückgabe als Wert kann eine Kopie erzeugen.
- Book: lst-0514-book.cpp
- Listing 20.3: Eine Rückgabe als Zeiger kopiert nur den Zeiger, nicht das Objekt.
- Book: lst-0515-book.cpp
- Listing 20.4: In den folgenden Beispielen verwende ich Image als Klasse, zu der ich einen Zeiger haben will.
- Book: lst-0517-book.cpp
- Godbolt: lst-0517-godb.cpp, https://godbolt.org/z/ehhGPjabz
- Listing 20.5: unique_ptr als Datenfeld, Rückgabewert und lokale Variable
- Book: lst-0518-book.cpp
- Godbolt: lst-0518-godb.cpp, https://godbolt.org/z/Eh9ox6x9E
- Listing 20.6: Ein Spielfeld mit lauter verschiedenen Objekten.
- Book: lst-0520-book.cpp
- Godbolt: lst-0520-godb.cpp, https://godbolt.org/z/sas3b1E3b
- Listing 20.7: Wenn ein roher Zeiger ein Objekt besitzt, sind die möglichen Fehler oft schwer zu erkennen.
- Book: lst-0523-book.cpp
- Godbolt: lst-0523-godb.cpp, https://godbolt.org/z/Mqrxxs11Y
- Listing 20.8: prims enthält Zeiger in einen anderen Container.
- Book: lst-0525-book.cpp
- Godbolt: lst-0525-godb.cpp, https://godbolt.org/z/YMe5PY6aT
- Listing 20.9: Liefern Sie keine Adressen von funktionslokalen Objekten zurück.
- Book: lst-0528-book.cpp
- Listing 20.10: Mit rohen Zeigern, die in ein C-Array zeigen, können Sie rechnen.
- Book: lst-0533-book.cpp
- Godbolt: lst-0533-godb.cpp, https://godbolt.org/z/3zrK76zn8
- Listing 20.11: C-Arrays verfallen als Parameter zu rohen Zeigern.
- Book: lst-0537-book.cpp
- Godbolt: lst-0537-godb.cpp, https://godbolt.org/z/1qx16Gr61
- Listing 20.12: »unique_ptr« arbeitet mit dem dynamischen C-Array zusammen.
- Book: lst-0541-book.cpp
- Godbolt: lst-0541-godb.cpp, https://godbolt.org/z/MEqcExjrY
- GodboltId:s6sss481E
- Book: lst-0545-book.cpp
- Godbolt: lst-0545-godb.cpp, https://godbolt.org/z/s6sss481E
- Listing 20.13: Mit »string« fällt Ihnen oft gar nicht auf, dass Textliterale »const char[]« sind.
- Book: lst-0546-book.cpp
- Godbolt: lst-0546-godb.cpp, https://godbolt.org/z/oKsz7d55T
- Listing 20.14: Iteratoren holen Sie mit »begin« und »end«.
- Book: lst-0547-book.cpp
- Godbolt: lst-0547-godb.cpp, https://godbolt.org/z/4nqz4ed4W
- Listing 20.15: Rohe Zeiger können Sie wie Iteratoren verwenden.
- Book: lst-0548-book.cpp
- Godbolt: lst-0548-godb.cpp, https://godbolt.org/z/zsqKz76cj
- Listing 20.16: Lohnt es sich, das Freigeben von Speicher zu sparen?
- Book: lst-0549-book.cpp
- Godbolt: lst-0549-godb.cpp, https://godbolt.org/z/M13eYMrjG
- Listing 21.1: Zeilen, die Präprozessordirektiven enthalten, beginnen mit einem #.
- Book: lst-0551-book.cpp
- Godbolt: lst-0551-godb.cpp, https://godbolt.org/z/MjcvochqP
- Listing 21.2: Ihre Hauptdatei mit »main« bindet per »#include« die Headerdatei ein.
- Book: lst-0552-book.cpp
- Godbolt: lst-0552-godb.cpp, https://godbolt.org/z/zG91TMEa8
- Listing 21.3: Das Ergebnis des Präprozessordurchlaufs
- Book: lst-0557-book.cpp
- Godbolt: lst-0557-godb.cpp, https://godbolt.org/z/6coqbhfKM
- Listing 21.5: Die rein textuelle Ersetzung führt bei Makros zur Mehrfachausführung.
- Book: lst-0565-book.cpp
- Godbolt: lst-0565-godb.cpp, https://godbolt.org/z/jzKfabPh3
- GodboltId:YzYz3x1zx
- Book: lst-0567-book.cpp
- Godbolt: lst-0567-godb.cpp, https://godbolt.org/z/YzYz3x1zx
- GodboltId:5zrfvovaW
- Book: lst-0568-book.cpp
- Godbolt: lst-0568-godb.cpp, https://godbolt.org/z/5zrfvovaW
- GodboltId:6xzTx83zE
- Book: lst-0569-book.cpp
- Godbolt: lst-0569-godb.cpp, https://godbolt.org/z/6xzTx83zE
- Listing 21.6: Ein einfaches Funktionstemplate ist viel besser als ein Makro.
- Book: lst-0570-book.cpp
- Godbolt: lst-0570-godb.cpp, https://godbolt.org/z/acMjvxcM5
- Listing 22.1: Das Programm »gzpack.cpp« nutzt eine C-Bibliothek. Hier sehen Sie die Sektion mit den Includes.
- Book: lst-0577-book.cpp
- Godbolt: lst-0577-godb.cpp, https://godbolt.org/z/9Trh8h8Mb
- Listing 22.2: Dieser Teil von »gzpack.cpp« enthält alle verwendeten C-Funktionen.
- Book: lst-0578-book.cpp
- Godbolt: lst-0578-godb.cpp, https://godbolt.org/z/Yh7j1WEGc
- Listing 22.3: Dieser Teil von »gzpack.cpp« behandelt das Lesen und Schreiben der Dateien.
- Book: lst-0580-book.cpp
- Godbolt: lst-0580-godb.cpp, https://godbolt.org/z/3P9ToPEYq
- Listing 22.4: Mit »main« des Programms »gzpack.cpp« ist das Beispiel komplett.
- Book: lst-0581-book.cpp
- Godbolt: lst-0581-godb.cpp, https://godbolt.org/z/4sod8vrr6
- Listing 23.1: Der Aufruf eines Funktionstemplates klappt, solange der Funktionskörper mit den Templateparametern gültig ist.
- Book: lst-0591-book.cpp
- Godbolt: lst-0591-godb.cpp, https://godbolt.org/z/aMPj3K7EE
- Listing 23.2: Mit und ohne explizite Typangabe beim Aufruf
- Book: lst-0594-book.cpp
- Godbolt: lst-0594-godb.cpp, https://godbolt.org/z/816Ys17aT
- Listing 23.3: Ein Templateparameter kann auch eine konstante Zahl sein.
- Book: lst-0596-book.cpp
- Godbolt: lst-0596-godb.cpp, https://godbolt.org/z/c9xzM7EhP
- Listing 23.4: Mit auto als Templateparameter können Sie jeden einfachen Wert angeben.
- Book: lst-0598-book.cpp
- Listing 23.5: Mit »auto« und … können Sie beliebige Werte als Templateparameter angeben.
- Book: lst-0599-book.cpp
- Listing 23.6: Für »TYP« wird vom Compiler »const&« ermittelt.
- Book: lst-0601-book.cpp
- Godbolt: lst-0601-godb.cpp, https://godbolt.org/z/cYsTo371z
- Listing 23.7: Auch eine Methode kann ein Template sein.
- Book: lst-0603-book.cpp
- Godbolt: lst-0603-godb.cpp, https://godbolt.org/z/bfofn76Ke
- Listing 23.8: Auch in der Standardbibliothek finden Sie allerlei Funktionstemplates.
- Book: lst-0604-book.cpp
- Godbolt: lst-0604-godb.cpp, https://godbolt.org/z/oTn1K4sGG
- Listing 23.9: Eigenen Algorithmen übergeben Sie Ranges als Argumente, nicht den Container.
- Book: lst-0605-book.cpp
- Godbolt: lst-0605-godb.cpp, https://godbolt.org/z/h3baE65od
- Listing 23.10: Eigenen Algorithmen übergeben Sie Iteratoren als Argumente, nicht den Container.
- Book: lst-0606-book.cpp
- Godbolt: lst-0606-godb.cpp, https://godbolt.org/z/13eMxKTfj
- Listing 23.11: So finden Sie den Zahlenbereich der Ganzzahltypen heraus.
- Book: lst-0608-book.cpp
- Godbolt: lst-0608-godb.cpp, https://godbolt.org/z/oY9v9a8d6
- Listing 23.12: Eine Funktion als Parameter
- Book: lst-0609-book.cpp
- Listing 23.13: Verwenden Sie den Namen einer passenden Funktion als Funktionsparameter.
- Book: lst-0612-book.cpp
- Godbolt: lst-0612-godb.cpp, https://godbolt.org/z/7YKjcTbhn
- Listing 23.14: Es ist egal, ob Sie beim Aufruf den Adressoperator verwenden oder nicht.
- Book: lst-0615-book.cpp
- Godbolt: lst-0615-godb.cpp, https://godbolt.org/z/WbnThTs8e
- Listing 23.15: Eine Klasse mit »operator()« erzeugt Funktionsobjekte.
- Book: lst-0616-book.cpp
- Godbolt: lst-0616-godb.cpp, https://godbolt.org/z/Px83WPKfq
- Listing 23.16: Eine Klasse mit einer normalen Methode
- Book: lst-0619-book.cpp
- Godbolt: lst-0619-godb.cpp, https://godbolt.org/z/EExfde3vP
- Listing 23.17: Mit »operator<« als Funktion können Sie nur eine Sortierung implementieren.
- Book: lst-0620-book.cpp
- Godbolt: lst-0620-godb.cpp, https://godbolt.org/z/3ch51ov87
- Listing 23.18: Ein Funktor ohne Schnickschnack, aber mit großem Nutzen
- Book: lst-0622-book.cpp
- GodboltId:53EcTMo3e
- Book: lst-0623-book.cpp
- Godbolt: lst-0623-godb.cpp, https://godbolt.org/z/53EcTMo3e
- Listing 23.19: Viele Algorithmen der Standardbibliothek arbeiten ebenfalls mit »operator<«.
- Book: lst-0627-book.cpp
- Godbolt: lst-0627-godb.cpp, https://godbolt.org/z/MrcGhxTdT
- Listing 23.20: Mit der Zugriffsklausel können Sie im Lambda auf äußere Variablen zugreifen.
- Book: lst-0634-book.cpp
- Godbolt: lst-0634-godb.cpp, https://godbolt.org/z/ers9eWPbG
- Listing 23.21: Die Zugriffsklausel kann auch Referenzen enthalten.
- Book: lst-0635-book.cpp
- Godbolt: lst-0635-godb.cpp, https://godbolt.org/z/4zYsWW9Wq
- Listing 23.22: »mutable« macht Wert-Captures in Lambdas veränderbar.
- Book: lst-0637-book.cpp
- Godbolt: lst-0637-godb.cpp, https://godbolt.org/z/zMWo69974
- Listing 23.23: Wenn möglich, besser ohne mutable
- Book: lst-0638-book.cpp
- Godbolt: lst-0638-godb.cpp, https://godbolt.org/z/8GxPMEc5o
- GodboltId:YWe15Ehd8
- Book: lst-0641-book.cpp
- Godbolt: lst-0641-godb.cpp, https://godbolt.org/z/YWe15Ehd8
- GodboltId:nenW8aM81
- Book: lst-0642-book.cpp
- Godbolt: lst-0642-godb.cpp, https://godbolt.org/z/nenW8aM81
- Listing 23.24: Concepts können auf unterschiedliche Weise geschrieben werden.
- Book: lst-0643-book.cpp
- Godbolt: lst-0643-godb.cpp, https://godbolt.org/z/W6cdra8K9
- Listing 23.25: Mit Concepts können Sie einzelne Überladungen einschränken.
- Book: lst-0644-book.cpp
- Godbolt: lst-0644-godb.cpp, https://godbolt.org/z/Kxrz5ETh6
- GodboltId:eaGre4bqr
- Book: lst-0646-book.cpp
- Godbolt: lst-0646-godb.cpp, https://godbolt.org/z/eaGre4bqr
- Listing 23.26: Geben Sie weitere Bedingungen mit requires an.
- Book: lst-0647-book.cpp
- Godbolt: lst-0647-godb.cpp, https://godbolt.org/z/orTK9daa3
- Listing 23.27: Definieren Sie wiederkehrende Anforderungen mit concept.
- Book: lst-0648-book.cpp
- Godbolt: lst-0648-godb.cpp, https://godbolt.org/z/Tcxnr6jTM
- GodboltId:9qsGW6M8Y
- Book: lst-0649-book.cpp
- Godbolt: lst-0649-godb.cpp, https://godbolt.org/z/9qsGW6M8Y
- Listing 23.28: So verwenden Sie Concepts in einem constexpr if.
- Book: lst-0650-book.cpp
- Listing 23.29: Ein Klassentemplate erhält einen Typ als formalen Parameter.
- Book: lst-0654-book.cpp
- Godbolt: lst-0654-godb.cpp, https://godbolt.org/z/jqzTMxYKv
- Listing 23.30: Methodendefinitionen außerhalb des Körpers eines Klassentemplates sind syntaktisch etwas aufwendiger.
- Book: lst-0656-book.cpp
- Godbolt: lst-0656-godb.cpp, https://godbolt.org/z/4fK5WdoG8
- Listing 23.31: Klassentemplate-Methoden wie Funktionstemplates spezialisieren.
- Book: lst-0657-book.cpp
- Godbolt: lst-0657-godb.cpp, https://godbolt.org/z/M6earoWMn
- Listing 23.32: So erzeugen Sie Instanzen aus einer Templateklasse.
- Book: lst-0658-book.cpp
- Godbolt: lst-0658-godb.cpp, https://godbolt.org/z/9vP3o68bW
- Listing 23.33: Aus Konstruktorargumenten auf Templateparameter schließen
- Book: lst-0659-book.cpp
- Godbolt: lst-0659-godb.cpp, https://godbolt.org/z/7KzcWE8Pz
- Listing 23.34: Sie können make_-Hilfsfunktionen und auto schon lange verwenden.
- Book: lst-0660-book.cpp
- GodboltId:dMTnbT1v4
- Book: lst-0661-book.cpp
- Godbolt: lst-0661-godb.cpp, https://godbolt.org/z/dMTnbT1v4
- GodboltId:jbafeEdoW
- Book: lst-0662-book.cpp
- Godbolt: lst-0662-godb.cpp, https://godbolt.org/z/jbafeEdoW
- GodboltId:xPrheoeEd
- Book: lst-0665-book.cpp
- Godbolt: lst-0665-godb.cpp, https://godbolt.org/z/xPrheoeEd
- GodboltId:Y6v6cKE3v
- Book: lst-0670-book.cpp
- Godbolt: lst-0670-godb.cpp, https://godbolt.org/z/Y6v6cKE3v
- GodboltId:baPeoTbM8
- Book: lst-0671-book.cpp
- Godbolt: lst-0671-godb.cpp, https://godbolt.org/z/baPeoTbM8
- Listing 23.35: Ein Template mit einer variablen Anzahl von Argumenten
- Book: lst-0672-book.cpp
- Godbolt: lst-0672-godb.cpp, https://godbolt.org/z/c6W6EWb1K
- GodboltId:8oYaWYnbx
- Book: lst-0678-book.cpp
- Godbolt: lst-0678-godb.cpp, https://godbolt.org/z/8oYaWYnbx
- Listing 23.36: Eigene Literaloperatoren
- Book: lst-0679-book.cpp
- Godbolt: lst-0679-godb.cpp, https://godbolt.org/z/cjx49ef19
- Listing 23.37: Welches Literal führt zu welchem Operatoraufruf?
- Book: lst-0680-book.cpp
- Godbolt: lst-0680-godb.cpp, https://godbolt.org/z/Mevoshb3o
- Listing 23.38: Ein Template für Literale der exakten Länge zwei
- Book: lst-0681-book.cpp
- Godbolt: lst-0681-godb.cpp, https://godbolt.org/z/5rdzn8YP4
- Listing 23.39: Rekursive Definition für beliebige Literallängen
- Book: lst-0682-book.cpp
- Godbolt: lst-0682-godb.cpp, https://godbolt.org/z/sbxojqjqs
- Listing 23.40: Das neue if constexpr spart Funktionsspezialisierungen.
- Book: lst-0683-book.cpp
- Godbolt: lst-0683-godb.cpp, https://godbolt.org/z/KvsGh4f1v
- Listing 23.41: Mit Faltausdrücken werden variadische Templates einfacher.
- Book: lst-0684-book.cpp
- Godbolt: lst-0684-godb.cpp, https://godbolt.org/z/cPoEjqzM7
- Listing 23.42: Ob vorverarbeitet oder roh besser ist, hängt von der Anwendung ab.
- Book: lst-0685-book.cpp
- Godbolt: lst-0685-godb.cpp, https://godbolt.org/z/Yd4sser5j
- Listing 24.1: Für Bereiche nutzen Sie Iteratorpaare oder ab C++23 Ranges.
- Book: lst-0694-book.cpp
- Godbolt: lst-0694-godb.cpp, https://godbolt.org/z/qGrYPrqYn
- Listing 24.2: Ein Paar Iteratoren definiert einen Bereich von Elementen.
- Book: lst-0695-book.cpp
- Godbolt: lst-0695-godb.cpp, https://godbolt.org/z/M1d9jEP74
- Listing 24.3: Verwendet indirekt begin() und end() des Containers
- Book: lst-0696-book.cpp
- Godbolt: lst-0696-godb.cpp, https://godbolt.org/z/Yv3vcxPv5
- GodboltId:babK485oT
- Book: lst-0697-book.cpp
- Godbolt: lst-0697-godb.cpp, https://godbolt.org/z/babK485oT
- GodboltId:nj14e6Wq4
- Book: lst-0698-book.cpp
- Godbolt: lst-0698-godb.cpp, https://godbolt.org/z/nj14e6Wq4
- Listing 24.4: Ein Algorithmus nach dem anderen mit Iteratoren
- Book: lst-0699-book.cpp
- Godbolt: lst-0699-godb.cpp, https://godbolt.org/z/arfee3TTP
- Listing 24.5: Eine Pipeline aus Views statt Algorithmen
- Book: lst-0700-book.cpp
- Godbolt: lst-0700-godb.cpp, https://godbolt.org/z/TG1qd31Mq
- Listing 24.8: Für »const«-Objekte liefern »begin()« und »end()« einen »const_iterator« zurück.
- Book: lst-0702-book.cpp
- Godbolt: lst-0702-godb.cpp, https://godbolt.org/z/dxb98rWzo
- Listing 24.9: Iteratoradapter verändern das Verhalten von Operationen.
- Book: lst-0706-book.cpp
- Godbolt: lst-0706-godb.cpp, https://godbolt.org/z/7xYcqqh68
- Listing 24.10: Ein (zu) einfacher Allokator und sein Einsatz
- Book: lst-0707-book.cpp
- Godbolt: lst-0707-godb.cpp, https://godbolt.org/z/TzvK9hTsj
- Listing 24.11: Typaliase sind manchmal klarer als die konkreten Typen.
- Book: lst-0709-book.cpp
- Godbolt: lst-0709-godb.cpp, https://godbolt.org/z/c97qra3M7
- Listing 24.12: Dies ist die Schablone für die Beispiellistings dieses Abschnitts zu vector.
- Book: lst-0710-book.cpp
- Godbolt: lst-0710-godb.cpp, https://godbolt.org/z/WK86eaz1x
- Listing 24.13: Der Standardkonstruktor initialisiert einen vector leer.
- Book: lst-0711-book.cpp
- Godbolt: lst-0711-godb.cpp, https://godbolt.org/z/7zMP5fo7c
- Listing 24.14: Sie kopieren einen »vector« mittels des Konstruktors oder implizit.
- Book: lst-0712-book.cpp
- Godbolt: lst-0712-godb.cpp, https://godbolt.org/z/cE6G1aErs
- Listing 24.15: Bei Rückgabewerten kann der Compiler auch oft verschieben.
- Book: lst-0713-book.cpp
- Godbolt: lst-0713-godb.cpp, https://godbolt.org/z/EK4e7Trv3
- Listing 24.16: Mit einer Initialisierungsliste befüllen Sie einen vector vorab. Achten Sie auf die korrekten Typen in der Liste.
- Book: lst-0714-book.cpp
- Godbolt: lst-0714-godb.cpp, https://godbolt.org/z/4T7fjxdPa
- Listing 24.17: Kopieren Sie bei der Initialisierung Werte aus einem beliebigen anderen Container oder C-Array.
- Book: lst-0715-book.cpp
- Godbolt: lst-0715-godb.cpp, https://godbolt.org/z/foPadWsKs
- Listing 24.18: Vorinitialisieren mit einer festen Anzahl von Werten gibt es (fast) nur bei »vector«.
- Book: lst-0716-book.cpp
- Godbolt: lst-0716-godb.cpp, https://godbolt.org/z/addobjfsK
- Listing 24.19: »vector« können Sie zuweisen oder mit »assign« später reinitialisieren.
- Book: lst-0717-book.cpp
- Godbolt: lst-0717-godb.cpp, https://godbolt.org/z/Yb4jEdaKj
- Listing 24.20: Mit »begin«, »end« und deren Verwandten erhalten Sie Iteratoren.
- Book: lst-0718-book.cpp
- Godbolt: lst-0718-godb.cpp, https://godbolt.org/z/6ahzhdjva
- Listing 24.21: Mit »vector«-Iteratoren können Sie wahlfrei rechnen.
- Book: lst-0719-book.cpp
- Godbolt: lst-0719-godb.cpp, https://godbolt.org/z/vMa8bPaob
- Listing 24.22: Der Normalfall ist Zugriff mit »[]«, weil Sie die Grenzen schon woanders überprüfen.
- Book: lst-0720-book.cpp
- Godbolt: lst-0720-godb.cpp, https://godbolt.org/z/aW3McGofx
- Listing 24.23: Konstanter Container liefert konstante Referenz zurück.
- Book: lst-0721-book.cpp
- Godbolt: lst-0721-godb.cpp, https://godbolt.org/z/jGx51caTj
- Listing 24.24: insert verschiebt hier alle Elemente um eins nach hinten.
- Book: lst-0722-book.cpp
- Godbolt: lst-0722-godb.cpp, https://godbolt.org/z/YhYs3z5Ex
- Listing 24.25: Verwenden Sie data() als Schnittstelle zu C.
- Book: lst-0723-book.cpp
- Godbolt: lst-0723-godb.cpp, https://godbolt.org/z/evse4x8zK
- Listing 24.26: So verwenden Sie span.
- Book: lst-0728-book.cpp
- Godbolt: lst-0728-godb.cpp, https://godbolt.org/z/h7jf4KM1q
- Listing 24.27: Dies sind span mit fester Größe.
- Book: lst-0731-book.cpp
- Godbolt: lst-0731-godb.cpp, https://godbolt.org/z/a3qqr1YPM
- Listing 24.28: Durch eine »span« kann man auch schreiben.
- Book: lst-0733-book.cpp
- Godbolt: lst-0733-godb.cpp, https://godbolt.org/z/6Ez5GdozG
- Listing 24.29: So funktioniert die in C++23 hinzugekommene »mdspan«.
- Book: lst-0734-book.cpp
- Godbolt: lst-0734-godb.cpp, https://godbolt.org/z/n8jn7v5vb
- Listing 24.30: Typischerweise fügen Sie am Ende bei vector an.
- Book: lst-0735-book.cpp
- Godbolt: lst-0735-godb.cpp, https://godbolt.org/z/P6MrKfaj9
- GodboltId:6836bdczd
- Book: lst-0738-book.cpp
- Godbolt: lst-0738-godb.cpp, https://godbolt.org/z/6836bdczd
- Listing 24.31: erase mit zwei Parametern löscht einen ganzen Bereich.
- Book: lst-0739-book.cpp
- Godbolt: lst-0739-godb.cpp, https://godbolt.org/z/fe8bev9Y9
- Listing 24.32: Operationen rund um Größe und Kapazität von »vector«.
- Book: lst-0741-book.cpp
- Godbolt: lst-0741-godb.cpp, https://godbolt.org/z/xYsherrjs
- GodboltId:Y1W8WfxYn
- Book: lst-0742-book.cpp
- Godbolt: lst-0742-godb.cpp, https://godbolt.org/z/Y1W8WfxYn
- Listing 24.33: Unterschiedliche »arrays« als Parameter benötigen Templateprogrammierung.
- Book: lst-0743-book.cpp
- Godbolt: lst-0743-godb.cpp, https://godbolt.org/z/nqbKT9GEa
- Listing 24.34: Schablone für die Beispiellistings dieses Abschnitts zu »array«
- Book: lst-0744-book.cpp
- Godbolt: lst-0744-godb.cpp, https://godbolt.org/z/PrM4fGcWo
- Listing 24.36: »array« unterstützt »get« von »tuple«.
- Book: lst-0745-book.cpp
- Godbolt: lst-0745-godb.cpp, https://godbolt.org/z/KrbTrx1aG
- Listing 24.37: Ein Array unterstützt strukturiertes Binden.
- Book: lst-0746-book.cpp
- Godbolt: lst-0746-godb.cpp, https://godbolt.org/z/h6nrPYWfM
- Listing 24.38: Arrays können Sie lexikografisch vergleichen.
- Book: lst-0747-book.cpp
- Godbolt: lst-0747-godb.cpp, https://godbolt.org/z/n16WYf58h
- Listing 24.39: Wir entfernen paarweise vorne und hinten und vergleichen.
- Book: lst-0748-book.cpp
- Godbolt: lst-0748-godb.cpp, https://godbolt.org/z/rc1f3Yd9r
- Listing 24.40: Was die »deque« so alles kann!
- Book: lst-0750-book.cpp
- Godbolt: lst-0750-godb.cpp, https://godbolt.org/z/7P1Ef7jj4
- Listing 24.41: »splice« ist die Spezialität von »list« und verbindet zwei Listen effizient.
- Book: lst-0751-book.cpp
- Godbolt: lst-0751-godb.cpp, https://godbolt.org/z/so5Gebb4M
- Listing 24.42: »before_begin« können Sie als Argument für »insert_after« nehmen.
- Book: lst-0752-book.cpp
- Godbolt: lst-0752-godb.cpp, https://godbolt.org/z/9b9fY4Mve
- Listing 24.43: »erase_after« kann einen Bereich von Elementen löschen.
- Book: lst-0753-book.cpp
- Godbolt: lst-0753-godb.cpp, https://godbolt.org/z/ajn3haEcY
- Listing 24.44: »splice_after« kann sehr effizient Listen zusammenfügen.
- Book: lst-0754-book.cpp
- Godbolt: lst-0754-godb.cpp, https://godbolt.org/z/Ka47W5Wjh
- Listing 24.45: Dies ist die Schablone für die Beispiellistings dieses Abschnitts zu »set«.
- Book: lst-0755-book.cpp
- Godbolt: lst-0755-godb.cpp, https://godbolt.org/z/h51oT7r3h
- Listing 24.46: Wenn Sie die Vergleichsoperation falsch definieren, funktioniert »set« nicht mehr.
- Book: lst-0757-book.cpp
- Godbolt: lst-0757-godb.cpp, https://godbolt.org/z/GbPsraKxa
- Listing 24.47: Die Vergleichsoperation darf Elemente zusammenfassen.
- Book: lst-0758-book.cpp
- Godbolt: lst-0758-godb.cpp, https://godbolt.org/z/MeGnEez15
- Listing 24.48: Ein eigener Spaceship-Operator für die »set«-Kompatibilität
- Book: lst-0759-book.cpp
- Godbolt: lst-0759-godb.cpp, https://godbolt.org/z/a3cnTn3zz
- Listing 24.49: Es gibt verschiedene Möglichkeiten, einen Comparator anzugeben.
- Book: lst-0761-book.cpp
- Godbolt: lst-0761-godb.cpp, https://godbolt.org/z/1Eoh9aoas
- Listing 24.50: Es gibt wieder mehrere Möglichkeiten, beim Konstruieren Elemente anzugeben.
- Book: lst-0762-book.cpp
- Godbolt: lst-0762-godb.cpp, https://godbolt.org/z/56rb9qfed
- GodboltId:1dTPEd3nP
- Book: lst-0763-book.cpp
- Godbolt: lst-0763-godb.cpp, https://godbolt.org/z/1dTPEd3nP
- GodboltId:8eGvWY45o
- Book: lst-0764-book.cpp
- Godbolt: lst-0764-godb.cpp, https://godbolt.org/z/8eGvWY45o
- Listing 24.51: Statt »assign« können Sie das Copy-and-swap-Idiom verwenden.
- Book: lst-0765-book.cpp
- Godbolt: lst-0765-godb.cpp, https://godbolt.org/z/1vGPo9a99
- Listing 24.52: Zum Einfügen eines einzelnen Elements nehmen Sie »insert« oder »emplace«.
- Book: lst-0766-book.cpp
- Godbolt: lst-0766-godb.cpp, https://godbolt.org/z/PjEKKben4
- Listing 24.53: Die Rückgabe können Sie beim Einfügen sortierter Bereiche wiederverwenden.
- Book: lst-0767-book.cpp
- Godbolt: lst-0767-godb.cpp, https://godbolt.org/z/qzaj79bor
- Listing 24.54: Nehmen Sie das gleiche insert bei sequenziellen und assoziativen Containern.
- Book: lst-0768-book.cpp
- Godbolt: lst-0768-godb.cpp, https://godbolt.org/z/nW3Gxe5Ye
- Listing 24.55: Sie können auch mehrere Elemente einfügen.
- Book: lst-0769-book.cpp
- Godbolt: lst-0769-godb.cpp, https://godbolt.org/z/rTvovhr5M
- Listing 24.56: Dies sind die »set«-Suchfunktionen.
- Book: lst-0770-book.cpp
- Godbolt: lst-0770-godb.cpp, https://godbolt.org/z/xnv9Wbxbz
- Listing 24.57: Sie können mit nicht identischen Schlüsseln suchen, wenn diese äquivalent sind.
- Book: lst-0771-book.cpp
- Godbolt: lst-0771-godb.cpp, https://godbolt.org/z/jGfeT94as
- Listing 24.58: »erase« löscht ein oder mehrere Elemente.
- Book: lst-0773-book.cpp
- Godbolt: lst-0773-godb.cpp, https://godbolt.org/z/xW9bTqfG4
- Listing 24.59: Mit »[]« erzeugen Sie als Seiteneffekt eventuell einen Eintrag.
- Book: lst-0774-book.cpp
- Godbolt: lst-0774-godb.cpp, https://godbolt.org/z/zWa58dYYq
- Listing 24.60: Dies ist die Schablone für die Beispiellistings dieses Abschnitts zur »map«.
- Book: lst-0775-book.cpp
- Godbolt: lst-0775-godb.cpp, https://godbolt.org/z/Eovd71TbT
- Listing 24.61: Auch bei einer »map« können Sie eine eigene Vergleichsfunktion mitgeben.
- Book: lst-0776-book.cpp
- Godbolt: lst-0776-godb.cpp, https://godbolt.org/z/nfs15n1Mn
- Listing 24.62: Die Initialisierungsliste muss »pair«-Elemente enthalten.
- Book: lst-0778-book.cpp
- Godbolt: lst-0778-godb.cpp, https://godbolt.org/z/79xx8ddoY
- Listing 24.63: Ein einzelnes neues Element geben Sie als Paar an.
- Book: lst-0779-book.cpp
- Godbolt: lst-0779-godb.cpp, https://godbolt.org/z/bzvrPefvY
- Listing 24.64: Mit »operator[]« automatisch erzeugen und gleich überschreiben
- Book: lst-0780-book.cpp
- Godbolt: lst-0780-godb.cpp, https://godbolt.org/z/7h3vsWvYG
- Listing 24.65: Sie können den Wert eines Ziels ändern.
- Book: lst-0781-book.cpp
- Godbolt: lst-0781-godb.cpp, https://godbolt.org/z/7E6cr8GE9
- Listing 24.66: Iteratoren von »map« sind vom Typ »pair«.
- Book: lst-0782-book.cpp
- Godbolt: lst-0782-godb.cpp, https://godbolt.org/z/16T5dob75
- Listing 24.67: Sie können »operator[]« nicht auf einer »const map« verwenden.
- Book: lst-0783-book.cpp
- Godbolt: lst-0783-godb.cpp, https://godbolt.org/z/54zqqhzh6
- Listing 24.68: Dies ist die Schablone für die Beispiellistings dieses Abschnitts zu »multiset«.
- Book: lst-0784-book.cpp
- Godbolt: lst-0784-godb.cpp, https://godbolt.org/z/PYbexWex3
- Listing 24.69: Einträge werden sortiert, doppelte bleiben erhalten.
- Book: lst-0785-book.cpp
- Godbolt: lst-0785-godb.cpp, https://godbolt.org/z/Mej9GjT1j
- Listing 24.70: Die »multiset«-Suchfunktionen finden den Bereich der passenden Elemente.
- Book: lst-0786-book.cpp
- Godbolt: lst-0786-godb.cpp, https://godbolt.org/z/9hPqa5MfY
- Listing 24.71: Dies ist die Schablone für die Listings dieses Abschnitts zur »multimap«.
- Book: lst-0787-book.cpp
- Godbolt: lst-0787-godb.cpp, https://godbolt.org/z/sfaEozjzq
- Listing 24.72: Es landen alle Einträge in der »multimap«.
- Book: lst-0788-book.cpp
- Godbolt: lst-0788-godb.cpp, https://godbolt.org/z/6no9dW64d
- Listing 24.73: »insert« und »emplace« bei der »multimap«
- Book: lst-0789-book.cpp
- Godbolt: lst-0789-godb.cpp, https://godbolt.org/z/dj68ej97r
- Listing 24.74: »erase«mit einem Schlüssel kann mehrere Elemente löschen.
- Book: lst-0790-book.cpp
- Godbolt: lst-0790-godb.cpp, https://godbolt.org/z/TbvKTn4Px
- Listing 24.75: Betreiben Sie ungeordnete assoziative Container niemals mit einer schlechten Hashfunktion.
- Book: lst-0791-book.cpp
- Godbolt: lst-0791-godb.cpp, https://godbolt.org/z/ejMv4ohse
- Listing 24.76: Doppelt so viele Elemente bei schlechter Hashfunktion heißt viermal länger.
- Book: lst-0792-book.cpp
- Godbolt: lst-0792-godb.cpp, https://godbolt.org/z/osdTM7vbx
- Listing 24.77: Dies ist die Schablone für die Beispiellistings zu »unordered_set«.
- Book: lst-0793-book.cpp
- Godbolt: lst-0793-godb.cpp, https://godbolt.org/z/xv6vrcsY6
- Listing 24.78: Ein »unordered_set« mit eigenem Vergleich und Hashfunktion
- Book: lst-0794-book.cpp
- Godbolt: lst-0794-godb.cpp, https://godbolt.org/z/MWrY1cznd
- Listing 24.79: Dies sind die Möglichkeiten, ein »unordered_set« zu initialisieren.
- Book: lst-0796-book.cpp
- Godbolt: lst-0796-godb.cpp, https://godbolt.org/z/WeMr9ePdh
- Listing 24.80: Einfügen in ein »unordered_set«
- Book: lst-0797-book.cpp
- Godbolt: lst-0797-godb.cpp, https://godbolt.org/z/KEb55ds4z
- Listing 24.81: Löschen erhält die Reihenfolge der restlichen Elemente.
- Book: lst-0798-book.cpp
- Godbolt: lst-0798-godb.cpp, https://godbolt.org/z/1s41eaWjx
- Listing 24.82: Sie können eimerweise auf »unordered_set« zugreifen.
- Book: lst-0799-book.cpp
- Godbolt: lst-0799-godb.cpp, https://godbolt.org/z/TTbY8YbG9
- Listing 24.83: Dies ist die Schablone für die Beispiellistings zu »unordered_map«.
- Book: lst-0800-book.cpp
- Godbolt: lst-0800-godb.cpp, https://godbolt.org/z/ffashhsK1
- Listing 24.84: Ein eigener Datentyp als Schlüssel in einer »unordered_map«
- Book: lst-0801-book.cpp
- Godbolt: lst-0801-godb.cpp, https://godbolt.org/z/Ka3czrn54
- Listing 24.85: Sie können auch nur einen Teil Ihres Objekts als Schlüssel verwenden.
- Book: lst-0802-book.cpp
- Godbolt: lst-0802-godb.cpp, https://godbolt.org/z/eTYqbedqK
- GodboltId:9szMGYK9v
- Book: lst-0804-book.cpp
- Godbolt: lst-0804-godb.cpp, https://godbolt.org/z/9szMGYK9v
- Listing 24.86: Dies sind die Möglichkeiten, ein »unordered_multiset« zu initialisieren.
- Book: lst-0805-book.cpp
- Godbolt: lst-0805-godb.cpp, https://godbolt.org/z/qnove9h8o
- Listing 24.87: Bei den »multi«-Varianten ergibt »count« richtig Sinn.
- Book: lst-0806-book.cpp
- Godbolt: lst-0806-godb.cpp, https://godbolt.org/z/a8cGxr9s9
- Listing 24.88: Adapter funktionieren mit wechselbaren Implementierungen.
- Book: lst-0807-book.cpp
- Godbolt: lst-0807-godb.cpp, https://godbolt.org/z/qaKv6Tebf
- Listing 24.89: »string« eignet sich besser für Texte als »vector
«. - Book: lst-0808-book.cpp
- Godbolt: lst-0808-godb.cpp, https://godbolt.org/z/6sYGnqnTj
- Listing 24.90: »bitset« im Beispiel
- Book: lst-0809-book.cpp
- Godbolt: lst-0809-godb.cpp, https://godbolt.org/z/jrGdT6665
- GodboltId:KPP16bdK9
- Book: lst-0810-book.cpp
- Godbolt: lst-0810-godb.cpp, https://godbolt.org/z/KPP16bdK9
- GodboltId:r11584Wef
- Book: lst-0811-book.cpp
- Godbolt: lst-0811-godb.cpp, https://godbolt.org/z/r11584Wef
- GodboltId:WGazqoGc1
- Book: lst-0812-book.cpp
- Godbolt: lst-0812-godb.cpp, https://godbolt.org/z/WGazqoGc1
- GodboltId:dd1q6GdYq
- Book: lst-0813-book.cpp
- Godbolt: lst-0813-godb.cpp, https://godbolt.org/z/dd1q6GdYq
- GodboltId:6z6d71Ka4
- Book: lst-0814-book.cpp
- Godbolt: lst-0814-godb.cpp, https://godbolt.org/z/6z6d71Ka4
- GodboltId:jr1chqbze
- Book: lst-0815-book.cpp
- Godbolt: lst-0815-godb.cpp, https://godbolt.org/z/jr1chqbze
- Listing 25.1: Mit dem Eingabevektor wird etwas gemacht, aber was?
- Book: lst-0816-book.cpp
- Godbolt: lst-0816-godb.cpp, https://godbolt.org/z/5czT3xoxc
- Listing 25.2: Dieser Eingabevektor wird sortiert!
- Book: lst-0817-book.cpp
- Godbolt: lst-0817-godb.cpp, https://godbolt.org/z/EjT7nPPv7
- Listing 25.3: Zusammenstecken von Funktionen
- Book: lst-0818-book.cpp
- Godbolt: lst-0818-godb.cpp, https://godbolt.org/z/9xrP8Ehvd
- Listing 25.4: Algorithmen laufen parallel
- Book: lst-0819-book.cpp
- Godbolt: lst-0819-godb.cpp, https://godbolt.org/z/qcT9o7YfG
- Listing 25.5: View-Typen und ihre Adapter
- Book: lst-0820-book.cpp
- Godbolt: lst-0820-godb.cpp, https://godbolt.org/z/rrq1v5qPs
- Listing 25.6: Besonders die C++23-Views lassen sich gut kombinieren.
- Book: lst-0821-book.cpp
- Godbolt: lst-0821-godb.cpp, https://godbolt.org/z/hYTv6f9eo
- Listing 25.7: Funktionen müssen einen Range-Parameter als universelle Referenz bekommen.
- Book: lst-0824-book.cpp
- Godbolt: lst-0824-godb.cpp, https://godbolt.org/z/64zdMEe4r
- Listing 25.8: Eine Funktion nur für Views und nicht für Container
- Book: lst-0825-book.cpp
- Godbolt: lst-0825-godb.cpp, https://godbolt.org/z/s1GjfWxv6
- Listing 25.9: Suchen mit Prädikat
- Book: lst-0826-book.cpp
- Godbolt: lst-0826-godb.cpp, https://godbolt.org/z/3r5E1f9YP
- Listing 25.10: Ein Palindrom mit einer Codezeile erkennen
- Book: lst-0827-book.cpp
- Godbolt: lst-0827-godb.cpp, https://godbolt.org/z/WqvM6KEEM
- Listing 25.11: Auch »nur lesende« Algorithmen wie »for_each« können die Elemente verändern.
- Book: lst-0828-book.cpp
- Godbolt: lst-0828-godb.cpp, https://godbolt.org/z/jz1Gqo7d9
- Listing 25.12: »transform« kann mit unterschiedlichen Typen jonglieren.
- Book: lst-0830-book.cpp
- Godbolt: lst-0830-godb.cpp, https://godbolt.org/z/7r4b8jdGr
- Listing 25.13: Mit Range-Adaptern transformieren
- Book: lst-0831-book.cpp
- Godbolt: lst-0831-godb.cpp, https://godbolt.org/z/j9ozax8qE
- GodboltId:s53qx664K
- Book: lst-0832-book.cpp
- Godbolt: lst-0832-godb.cpp, https://godbolt.org/z/s53qx664K
- Listing 25.14: Wirkungsweise der Mischmengenalgorithmen
- Book: lst-0833-book.cpp
- Godbolt: lst-0833-godb.cpp, https://godbolt.org/z/qW4hvE9s3
- GodboltId:73hTTM7s6
- Book: lst-0834-book.cpp
- Godbolt: lst-0834-godb.cpp, https://godbolt.org/z/73hTTM7s6
- Listing 25.15: »accumulate«
- Book: lst-0835-book.cpp
- Godbolt: lst-0835-godb.cpp, https://godbolt.org/z/8sEdxd5jP
- Listing 25.16: »adjacent_difference« und »pairwise_transform«
- Book: lst-0836-book.cpp
- Godbolt: lst-0836-godb.cpp, https://godbolt.org/z/z4ajz5E5P
- Listing 25.17: »iota«, »stride« und »take«
- Book: lst-0837-book.cpp
- Godbolt: lst-0837-godb.cpp, https://godbolt.org/z/aPoe3d873
- Listing 25.18: »inclusive_scan« und »exclusive_scan«
- Book: lst-0838-book.cpp
- Godbolt: lst-0838-godb.cpp, https://godbolt.org/z/qcWsdedMz
- GodboltId:dKPbjj1f8
- Book: lst-0839-book.cpp
- Godbolt: lst-0839-godb.cpp, https://godbolt.org/z/dKPbjj1f8
- Listing 25.19: Ein eigener Algorithmus
- Book: lst-0841-book.cpp
- Godbolt: lst-0841-godb.cpp, https://godbolt.org/z/n8ErWj7j6
- Listing 25.20: Der Einsatz von adjacent_pair
- Book: lst-0842-book.cpp
- Godbolt: lst-0842-godb.cpp, https://godbolt.org/z/91jj8Toqs
- Listing 25.21: Eigene Range-Adapter für Views
- Book: lst-0843-book.cpp
- Godbolt: lst-0843-godb.cpp, https://godbolt.org/z/dfoorEdYT
- Listing 26.1: Mit einem »vector« können Sie ein »set« simulieren.
- Book: lst-0844-book.cpp
- Godbolt: lst-0844-godb.cpp, https://godbolt.org/z/8d8qPWPcG
- GodboltId:fv3963reh
- Book: lst-0845-book.cpp
- Godbolt: lst-0845-godb.cpp, https://godbolt.org/z/fv3963reh
- Listing 26.2: Sie erhalten ein um ein Element vergrößertes Array zurück.
- Book: lst-0846-book.cpp
- Godbolt: lst-0846-godb.cpp, https://godbolt.org/z/jT7raEfKa
- Listing 26.3: »append« zur Laufzeit
- Book: lst-0850-book.cpp
- Godbolt: lst-0850-godb.cpp, https://godbolt.org/z/MMP16Mj3W
- Listing 26.4: Verschiedene Implementierungen eines Algorithmus, unterschieden anhand von Concepts
- Book: lst-0851-book.cpp
- Godbolt: lst-0851-godb.cpp, https://godbolt.org/z/scE81KfEa
- Listing 27.1: Den Stream als Referenz zurückzugeben, ermöglicht das Aneinanderhängen.
- Book: lst-0854-book.cpp
- Godbolt: lst-0854-godb.cpp, https://godbolt.org/z/Th66Y9WvE
- Listing 27.2: Unformatierte Eingabe aus Streams
- Book: lst-0856-book.cpp
- Godbolt: lst-0856-godb.cpp, https://godbolt.org/z/rP6vMM1Gr
- Listing 27.3: Zustandsprüfungen bei Streams
- Book: lst-0858-book.cpp
- Godbolt: lst-0858-godb.cpp, https://godbolt.org/z/rq3eGP3cv
- Listing 27.4: Operator »bool« von Streams
- Book: lst-0859-book.cpp
- Godbolt: lst-0859-godb.cpp, https://godbolt.org/z/Mr6E3Ez48
- Listing 27.5: Einen Boolean als Text oder Zahl ausgeben
- Book: lst-0860-book.cpp
- Godbolt: lst-0860-godb.cpp, https://godbolt.org/z/s1csa51z9
- Listing 27.6: Zahlenformate bei der Ausgabe
- Book: lst-0862-book.cpp
- Godbolt: lst-0862-godb.cpp, https://godbolt.org/z/bEKaYdssE
- Listing 27.7: Unterschiedliche Möglichkeiten zum Auffüllen bei der Ausgabe
- Book: lst-0863-book.cpp
- Godbolt: lst-0863-godb.cpp, https://godbolt.org/z/TMdzrjvhd
- Listing 27.8: Zahlenformate bei der Ausgabe
- Book: lst-0864-book.cpp
- Godbolt: lst-0864-godb.cpp, https://godbolt.org/z/sYK8oT33x
- Listing 27.9: Eigene Manipulatoren
- Book: lst-0865-book.cpp
- Godbolt: lst-0865-godb.cpp, https://godbolt.org/z/TY9df9sb6
- Listing 27.10: Manipulator als Lambda
- Book: lst-0867-book.cpp
- Listing 27.11: Manipulator mit Parameter
- Book: lst-0868-book.cpp
- Godbolt: lst-0868-godb.cpp, https://godbolt.org/z/KKE6nWT49
- Listing 27.12: Format direkt beeinflussen
- Book: lst-0870-book.cpp
- Godbolt: lst-0870-godb.cpp, https://godbolt.org/z/csbPMYM19
- Listing 27.13: Format mit »setf« und »unsetf« beeinflussen
- Book: lst-0871-book.cpp
- Godbolt: lst-0871-godb.cpp, https://godbolt.org/z/1xzzMdjdM
- Listing 27.14: Flags sichern und wiederherstellen
- Book: lst-0872-book.cpp
- Godbolt: lst-0872-godb.cpp, https://godbolt.org/z/4MY1Yznv9
- Listing 27.15: Öffnen und Anlegen von Dateien
- Book: lst-0873-book.cpp
- Godbolt: lst-0873-godb.cpp, https://godbolt.org/z/EfEx8fdGo
- Listing 27.16: Weitere Flags beim Öffnen von Dateien
- Book: lst-0874-book.cpp
- Godbolt: lst-0874-godb.cpp, https://godbolt.org/z/3ocr4v745
- Listing 27.17: Explizites Schließen eines Dateistreams
- Book: lst-0875-book.cpp
- Godbolt: lst-0875-godb.cpp, https://godbolt.org/z/arKsG6vqc
- Listing 27.18: Lesen und Schreiben mit Dateien
- Book: lst-0876-book.cpp
- Godbolt: lst-0876-godb.cpp, https://godbolt.org/z/KzsPfMbnq
- Listing 27.19: Byteweises Lesen und Schreiben
- Book: lst-0877-book.cpp
- Godbolt: lst-0877-godb.cpp, https://godbolt.org/z/43E38b6Eq
- Listing 27.20: Eine Datei byteweise kopieren
- Book: lst-0878-book.cpp
- Listing 27.21: Zeilenweises Lesen und Schreiben
- Book: lst-0879-book.cpp
- Godbolt: lst-0879-godb.cpp, https://godbolt.org/z/7r8r31K3e
- Listing 27.22: Blockweises Lesen und Schreiben mit »read« und »write«
- Book: lst-0880-book.cpp
- Godbolt: lst-0880-godb.cpp, https://godbolt.org/z/qP8cT5n7c
- Listing 27.23: Blockweises Lesen und Schreiben mit Hilfsklasse
- Book: lst-0881-book.cpp
- Godbolt: lst-0881-godb.cpp, https://godbolt.org/z/b3W48s86z
- Listing 27.24: Ausgaben zwischen Threads mit »osyncstream« synchronisieren
- Book: lst-0883-book.cpp
- Godbolt: lst-0883-godb.cpp, https://godbolt.org/z/dz75jr1rM
- Listing 27.25: Schreiben in einen »stringstream«
- Book: lst-0884-book.cpp
- Godbolt: lst-0884-godb.cpp, https://godbolt.org/z/cbGbcT178
- Listing 27.26: Lesen aus einem »stringstream«
- Book: lst-0885-book.cpp
- Godbolt: lst-0885-godb.cpp, https://godbolt.org/z/1EMox3hW5
- Listing 27.27: Typkonvertierung mittels »stringstream«
- Book: lst-0886-book.cpp
- Godbolt: lst-0886-godb.cpp, https://godbolt.org/z/vs5henTrz
- Listing 27.28: Die Funktion »to_string«
- Book: lst-0887-book.cpp
- Godbolt: lst-0887-godb.cpp, https://godbolt.org/z/z6sYqM48e
- Listing 27.29: Daten aus dem »rdbuf« übertragen
- Book: lst-0890-book.cpp
- Godbolt: lst-0890-godb.cpp, https://godbolt.org/z/on6W73nz1
- Listing 27.30: So fügen Sie Pfade zusammen.
- Book: lst-0892-book.cpp
- Godbolt: lst-0892-godb.cpp, https://godbolt.org/z/1YPT3asMz
- GodboltId:M8xjcnKxq
- Book: lst-0893-book.cpp
- Godbolt: lst-0893-godb.cpp, https://godbolt.org/z/M8xjcnKxq
- Listing 27.31: Ein Formatierer kann parsen und formatieren delegieren.
- Book: lst-0894-book.cpp
- Godbolt: lst-0894-godb.cpp, https://godbolt.org/z/jYsbxqzYW
- Listing 27.32: Ein Formatierer kann selbst parsen und ausgeben.
- Book: lst-0895-book.cpp
- Godbolt: lst-0895-godb.cpp, https://godbolt.org/z/WqjK31Gn6
- Listing 28.1: So geben Sie mit »pair« zwei Werte gleichzeitig zurück.
- Book: lst-0896-book.cpp
- Godbolt: lst-0896-godb.cpp, https://godbolt.org/z/4YM9d99xG
- Listing 28.2: Mit »tuple« können Sie beliebig viele Elemente zurückgeben.
- Book: lst-0897-book.cpp
- Godbolt: lst-0897-godb.cpp, https://godbolt.org/z/47jb7nEG4
- Listing 28.3: »get« funktioniert mit einem Typ als Index.
- Book: lst-0898-book.cpp
- Godbolt: lst-0898-godb.cpp, https://godbolt.org/z/cx8b9seaW
- Listing 28.4: Tupel zerlegen mit »tie« und »ignore«
- Book: lst-0899-book.cpp
- Godbolt: lst-0899-godb.cpp, https://godbolt.org/z/YzTvoE3x6
- Listing 28.5: Tupel implementieren lexikografische Ordnung.
- Book: lst-0900-book.cpp
- Godbolt: lst-0900-godb.cpp, https://godbolt.org/z/jrP4v76aj
- Listing 28.6: Tupel als Schlüssel
- Book: lst-0901-book.cpp
- Godbolt: lst-0901-godb.cpp, https://godbolt.org/z/9qhMo6zbb
- Listing 28.7: Tupel als Schlüssel
- Book: lst-0902-book.cpp
- Godbolt: lst-0902-godb.cpp, https://godbolt.org/z/vdT7TTjWK
- Listing 28.8: Mehrere kleine Tupel zu einem großen zusammenfügen
- Book: lst-0903-book.cpp
- Godbolt: lst-0903-godb.cpp, https://godbolt.org/z/eq1dqWbe9
- Listing 28.9: Nützliche Tuple-Type-Traits
- Book: lst-0904-book.cpp
- Godbolt: lst-0904-godb.cpp, https://godbolt.org/z/Psdz9s9Gc
- Listing 28.10: Übereinstimmung, Suche und Aufzählung mit regulären Ausdrücken
- Book: lst-0905-book.cpp
- Godbolt: lst-0905-godb.cpp, https://godbolt.org/z/zjboebEhc
- Listing 28.11: Suche und Übereinstimmung
- Book: lst-0906-book.cpp
- Godbolt: lst-0906-godb.cpp, https://godbolt.org/z/E9hcWGMW4
- Listing 28.12: Zugriff auf die Trefferdetails
- Book: lst-0907-book.cpp
- Godbolt: lst-0907-godb.cpp, https://godbolt.org/z/Ed8ca4Keq
- Listing 28.13: Treffer durch neuen Text ersetzen
- Book: lst-0908-book.cpp
- Godbolt: lst-0908-godb.cpp, https://godbolt.org/z/rErP43G89
- Listing 28.14: Schwer zu wartender regulärer Ausdruck
- Book: lst-0911-book.cpp
- Godbolt: lst-0911-godb.cpp, https://godbolt.org/z/v91WoqjPj
- Listing 28.15: Teile benennen und dann zusammenfügen
- Book: lst-0912-book.cpp
- Godbolt: lst-0912-godb.cpp, https://godbolt.org/z/TK6n4dG37
- Listing 28.16: Innerhalb des Ausdrucks kommentieren
- Book: lst-0913-book.cpp
- Godbolt: lst-0913-godb.cpp, https://godbolt.org/z/MszTjE3dv
- Listing 28.17: So erhalten Sie eine gleichverteilte Zufallszahl zwischen zwei Grenzen.
- Book: lst-0914-book.cpp
- Godbolt: lst-0914-godb.cpp, https://godbolt.org/z/6ecxTsYzj
- Listing 28.18: Geschwindigkeiten der Zufallsgeneratoren
- Book: lst-0918-book.cpp
- Godbolt: lst-0918-godb.cpp, https://godbolt.org/z/W8WbbxY78
- Listing 28.19: Eine Binomialverteilung
- Book: lst-0919-book.cpp
- Godbolt: lst-0919-godb.cpp, https://godbolt.org/z/hvM8K4oY6
- Listing 28.20: Eine »double«-Zufallszahl
- Book: lst-0920-book.cpp
- Godbolt: lst-0920-godb.cpp, https://godbolt.org/z/94McsP7PG
- Listing 28.21: Generierungsparameter für jede Zufallszahl einzeln ändern
- Book: lst-0921-book.cpp
- Godbolt: lst-0921-godb.cpp, https://godbolt.org/z/xz64qK3e5
- GodboltId:173nr4xxd
- Book: lst-0926-book.cpp
- Godbolt: lst-0926-godb.cpp, https://godbolt.org/z/173nr4xxd
- GodboltId:5snr1hq9b
- Book: lst-0927-book.cpp
- Godbolt: lst-0927-godb.cpp, https://godbolt.org/z/5snr1hq9b
- GodboltId:h8vsjxsME
- Book: lst-0929-book.cpp
- Godbolt: lst-0929-godb.cpp, https://godbolt.org/z/h8vsjxsME
- Listing 28.22: Mit »seconds« können Sie rechnen.
- Book: lst-0934-book.cpp
- Godbolt: lst-0934-godb.cpp, https://godbolt.org/z/hPPrPT69h
- Listing 28.23: Sie können »seconds« vergleichen.
- Book: lst-0935-book.cpp
- Godbolt: lst-0935-godb.cpp, https://godbolt.org/z/8c1r5xrs5
- Listing 28.24: Automatische Umrechnung zwischen Zeiteinheiten
- Book: lst-0936-book.cpp
- Godbolt: lst-0936-godb.cpp, https://godbolt.org/z/qrs63vdz1
- Listing 28.26: Sie können Einheiten mischen.
- Book: lst-0937-book.cpp
- Godbolt: lst-0937-godb.cpp, https://godbolt.org/z/vTx4cdqzq
- Listing 28.27: Erstellen Sie neue Zeiteinheiten oder sparsamere Repräsentationen.
- Book: lst-0938-book.cpp
- Godbolt: lst-0938-godb.cpp, https://godbolt.org/z/5Wd1rKrMe
- GodboltId:Gvz4crW75
- Book: lst-0939-book.cpp
- Godbolt: lst-0939-godb.cpp, https://godbolt.org/z/Gvz4crW75
- GodboltId:oaKbd9bd4
- Book: lst-0940-book.cpp
- Godbolt: lst-0940-godb.cpp, https://godbolt.org/z/oaKbd9bd4
- GodboltId:4s69W7qd3
- Book: lst-0942-book.cpp
- Godbolt: lst-0942-godb.cpp, https://godbolt.org/z/4s69W7qd3
- Listing 28.28: Ausgabe von Datum und Zeit mit format
- Book: lst-0944-book.cpp
- Godbolt: lst-0944-godb.cpp, https://godbolt.org/z/Md38b9zvf
- Listing 28.29: Immer der zweite Dienstag eines Monats
- Book: lst-0945-book.cpp
- Godbolt: lst-0945-godb.cpp, https://godbolt.org/z/19vf9jfTM
- Listing 28.30: Umwandlung in eine zeitzonenbehaftete Zeit und die Ausnahmen
- Book: lst-0947-book.cpp
- Godbolt: lst-0947-godb.cpp, https://godbolt.org/z/hP7nhEW69
- Listing 28.31: Die Zeitzonendatenbank
- Book: lst-0948-book.cpp
- Godbolt: lst-0948-godb.cpp, https://godbolt.org/z/YTKK3vT7s
- GodboltId:YsjvxTKGj
- Book: lst-0949-book.cpp
- Godbolt: lst-0949-godb.cpp, https://godbolt.org/z/YsjvxTKGj
- GodboltId:q1znGWb85
- Book: lst-0954-book.cpp
- Godbolt: lst-0954-godb.cpp, https://godbolt.org/z/q1znGWb85
- Listing 28.32: Einfache Zeitmessung eines Funktionsaufrufs
- Book: lst-0958-book.cpp
- Godbolt: lst-0958-godb.cpp, https://godbolt.org/z/8hxd9bPb4
- GodboltId:rz38hc1cx
- Book: lst-0959-book.cpp
- Godbolt: lst-0959-godb.cpp, https://godbolt.org/z/rz38hc1cx
- GodboltId:1xbhhTdEv
- Book: lst-0960-book.cpp
- Godbolt: lst-0960-godb.cpp, https://godbolt.org/z/1xbhhTdEv
- GodboltId:o359TThMj
- Book: lst-0961-book.cpp
- Godbolt: lst-0961-godb.cpp, https://godbolt.org/z/o359TThMj
- Listing 28.34: Sehr einfaches Beispiel dafür, wie man den Erfolg einer Operation prüfen kann
- Book: lst-0962-book.cpp
- Godbolt: lst-0962-godb.cpp, https://godbolt.org/z/1xnY8vd8Y
- Listing 28.35: Vergleich von »error_code« mit »error_condition«
- Book: lst-0963-book.cpp
- Godbolt: lst-0963-godb.cpp, https://godbolt.org/z/TPWc5nexq
- Listing 28.36: Überladungen von »operator==()« (abgekürzt)
- Book: lst-0964-book.cpp
- Listing 28.37: Definition von »enum class errc«
- Book: lst-0965-book.cpp
- Listing 28.38: Spezialisierung von »is_error_condition_enum« für »errc«
- Book: lst-0966-book.cpp
- Listing 28.39: Unter den Überladungen von make_error_condition ist auch eine mit »errc«.
- Book: lst-0967-book.cpp
- Listing 28.40: Erzeugung systemspezifischer Fehlercodes in einem portablen Programm
- Book: lst-0968-book.cpp
- Godbolt: lst-0968-godb.cpp, https://godbolt.org/z/n4v78WWod
- GodboltId:vxTxT4ajW
- Book: lst-0969-book.cpp
- Godbolt: lst-0969-godb.cpp, https://godbolt.org/z/vxTxT4ajW
- GodboltId:a8zP84j1x
- Book: lst-0971-book.cpp
- Godbolt: lst-0971-godb.cpp, https://godbolt.org/z/a8zP84j1x
- GodboltId:cjh93oPcr
- Book: lst-0972-book.cpp
- Godbolt: lst-0972-godb.cpp, https://godbolt.org/z/cjh93oPcr
- Listing 28.41: Nutzen Sie »typeindex« für verlässliche Typinformationen.
- Book: lst-0973-book.cpp
- Godbolt: lst-0973-godb.cpp, https://godbolt.org/z/x1dq1Wof6
- Listing 28.42: Boosts »demangled_name« ist für die Ausgabe von Typnamen extrem nützlich.
- Book: lst-0974-book.cpp
- Godbolt: lst-0974-godb.cpp, https://godbolt.org/z/n54566cqT
- GodboltId:Y3GsPd97d
- Book: lst-0976-book.cpp
- Godbolt: lst-0976-godb.cpp, https://godbolt.org/z/Y3GsPd97d
- Listing 28.43: Dieser Taschenrechner bildet Tasten auf Funktoren ab.
- Book: lst-0977-book.cpp
- Godbolt: lst-0977-godb.cpp, https://godbolt.org/z/j85P7b3oq
- GodboltId:e6xT638ch
- Book: lst-0978-book.cpp
- Godbolt: lst-0978-godb.cpp, https://godbolt.org/z/e6xT638ch
- Listing 28.44: Mit »bind« können Sie auch alle Parameter einer Funktion festlegen.
- Book: lst-0979-book.cpp
- Godbolt: lst-0979-godb.cpp, https://godbolt.org/z/xxfbGd9Ma
- Listing 28.45: So machen Sie aus Klassenmitgliedern freie Funktionen.
- Book: lst-0982-book.cpp
- Godbolt: lst-0982-godb.cpp, https://godbolt.org/z/a3aTx7K7h
- Listing 28.46: Basisfunktionalitäten von »variant«
- Book: lst-0983-book.cpp
- Godbolt: lst-0983-godb.cpp, https://godbolt.org/z/P8d494P6c
- Listing 28.47: Einen »variant« per Visitor inspizieren
- Book: lst-0984-book.cpp
- Godbolt: lst-0984-godb.cpp, https://godbolt.org/z/ce3jETW6W
- GodboltId:1eco9Wcr3
- Book: lst-0985-book.cpp
- Godbolt: lst-0985-godb.cpp, https://godbolt.org/z/1eco9Wcr3
- GodboltId:r5PqK8M8o
- Book: lst-0988-book.cpp
- Godbolt: lst-0988-godb.cpp, https://godbolt.org/z/r5PqK8M8o
- GodboltId:dcqenEd31
- Book: lst-0990-book.cpp
- Godbolt: lst-0990-godb.cpp, https://godbolt.org/z/dcqenEd31
- Listing 29.1: So starten Sie einen Thread.
- Book: lst-0991-book.cpp
- Godbolt: lst-0991-godb.cpp, https://godbolt.org/z/qnadYPWh1
- GodboltId:nPGY47r4K
- Book: lst-0993-book.cpp
- Godbolt: lst-0993-godb.cpp, https://godbolt.org/z/nPGY47r4K
- Listing 29.2: Mit »stop_token« kommuniziert die Außenwelt in den Thread hinein.
- Book: lst-0994-book.cpp
- Godbolt: lst-0994-godb.cpp, https://godbolt.org/z/6cqd7Tsae
- GodboltId:Tzs93MzfK
- Book: lst-0995-book.cpp
- Godbolt: lst-0995-godb.cpp, https://godbolt.org/z/Tzs93MzfK
- GodboltId:1jhrx1MMn
- Book: lst-0996-book.cpp
- Godbolt: lst-0996-godb.cpp, https://godbolt.org/z/1jhrx1MMn
- GodboltId:1aj16d7Ga
- Book: lst-0997-book.cpp
- Godbolt: lst-0997-godb.cpp, https://godbolt.org/z/1aj16d7Ga
- GodboltId:8TdzEGf3d
- Book: lst-0998-book.cpp
- Godbolt: lst-0998-godb.cpp, https://godbolt.org/z/8TdzEGf3d
- Listing 29.3: Parameter an die Threadfunktion fügen Sie dem Konstruktor hinzu.
- Book: lst-0999-book.cpp
- Godbolt: lst-0999-godb.cpp, https://godbolt.org/z/PP4GT3oc6
- Listing 29.4: Parameter werden in den Thread kopiert.
- Book: lst-1000-book.cpp
- Godbolt: lst-1000-godb.cpp, https://godbolt.org/z/fbnbKzrs1
- Listing 29.5: Achtung mit rohen Zeigern als Parameter
- Book: lst-1001-book.cpp
- Godbolt: lst-1001-godb.cpp, https://godbolt.org/z/hvq5dbzde
- Listing 29.6: Mit ref eine Referenz erzwingen
- Book: lst-1002-book.cpp
- Godbolt: lst-1002-godb.cpp, https://godbolt.org/z/GnsWYvecv
- Listing 29.7: Mit move Eingaben in den Thread verschieben
- Book: lst-1003-book.cpp
- Godbolt: lst-1003-godb.cpp, https://godbolt.org/z/j5Y15Esx7
- Listing 29.8: Einen Thread zurückgeben
- Book: lst-1004-book.cpp
- Godbolt: lst-1004-godb.cpp, https://godbolt.org/z/Kv84eb96E
- Listing 29.9: Einen Thread verschieben
- Book: lst-1005-book.cpp
- Godbolt: lst-1005-godb.cpp, https://godbolt.org/z/39x4bafco
- Listing 29.10: Threads im Container
- Book: lst-1006-book.cpp
- Godbolt: lst-1006-godb.cpp, https://godbolt.org/z/YrEPnYMaP
- Listing 29.11: Parallelität der Hardware herausfinden
- Book: lst-1009-book.cpp
- Godbolt: lst-1009-godb.cpp, https://godbolt.org/z/Gen1rfEn6
- Listing 29.12: Jeder Thread hat eine Kennung.
- Book: lst-1010-book.cpp
- Godbolt: lst-1010-godb.cpp, https://godbolt.org/z/TM6c7cdss
- Listing 29.13: Ein klassisches Data Race
- Book: lst-1011-book.cpp
- Godbolt: lst-1011-godb.cpp, https://godbolt.org/z/7GEs9a4n6
- Listing 29.14: Gutartige Data Races sind auch undefiniert.
- Book: lst-1012-book.cpp
- Godbolt: lst-1012-godb.cpp, https://godbolt.org/z/v3b6sxEab
- Listing 29.15: Latches können herunterzählen und warten.
- Book: lst-1013-book.cpp
- Godbolt: lst-1013-godb.cpp, https://godbolt.org/z/rrfn4d5WP
- Listing 29.16: Eine Barriere wartet auf eine bestimmte Anzahl von Threads.
- Book: lst-1014-book.cpp
- Godbolt: lst-1014-godb.cpp, https://godbolt.org/z/d3dc1Tsj8
- Listing 29.17: Ein Mutex zusammen mit einem einfachen Lock
- Book: lst-1015-book.cpp
- Godbolt: lst-1015-godb.cpp, https://godbolt.org/z/3fz5a4vYv
- Listing 29.18: Die Schnittstelle zu einem multithreadfähigen Stack
- Book: lst-1016-book.cpp
- Godbolt: lst-1016-godb.cpp, https://godbolt.org/z/4j7njd763
- Listing 29.19: Problematischer Code für den MxStack
- Book: lst-1017-book.cpp
- Godbolt: lst-1017-godb.cpp, https://godbolt.org/z/1boeTMMvf
- Listing 29.20: Eine Möglichkeit, wie zwei Threads obigen Code ausführen könnten
- Book: lst-1018-book.cpp
- Listing 29.21: Ein sehr einfacher threadsicherer Stack
- Book: lst-1019-book.cpp
- Godbolt: lst-1019-godb.cpp, https://godbolt.org/z/xGv9drh73
- Listing 29.22: »swap« für »MxStack«
- Book: lst-1022-book.cpp
- Godbolt: lst-1022-godb.cpp, https://godbolt.org/z/9PMcz1cqP
- Listing 29.23: Mutexe kann man transferieren.
- Book: lst-1023-book.cpp
- Godbolt: lst-1023-godb.cpp, https://godbolt.org/z/e7rraPGx4
- Listing 29.24: Späte Initialisierung mit nur einem Thread
- Book: lst-1024-book.cpp
- Godbolt: lst-1024-godb.cpp, https://godbolt.org/z/T7vehq58b
- Listing 29.25: Späte Initialisierung mit mehreren Threads
- Book: lst-1025-book.cpp
- Godbolt: lst-1025-godb.cpp, https://godbolt.org/z/3vcnzfqfM
- Listing 29.26: Späte Initialisierung kann auch innerhalb eines Threads nützlich sein.
- Book: lst-1026-book.cpp
- Godbolt: lst-1026-godb.cpp, https://godbolt.org/z/TcsrefEPh
- Listing 29.27: Es sind Vorkehrungen nötig, wenn ein Mutex mehrmals gesperrt werden soll.
- Book: lst-1027-book.cpp
- Godbolt: lst-1027-godb.cpp, https://godbolt.org/z/38qMMWoz6
- Listing 29.28: Speicher nur für den aktuellen Thread
- Book: lst-1028-book.cpp
- Godbolt: lst-1028-godb.cpp, https://godbolt.org/z/1j8W7GjTf
- Listing 29.29: Zwei Threads kommunizieren über eine Bedingungsvariable.
- Book: lst-1030-book.cpp
- Godbolt: lst-1030-godb.cpp, https://godbolt.org/z/af6jK9dKo
- Listing 29.30: »async« kann einfach asynchrone Berechnungen anstoßen.
- Book: lst-1035-book.cpp
- Godbolt: lst-1035-godb.cpp, https://godbolt.org/z/Gh9Y5srd7
- Listing 29.31: Es ist in Ordnung, ein Ergebnis nicht abzuholen.
- Book: lst-1036-book.cpp
- Godbolt: lst-1036-godb.cpp, https://godbolt.org/z/7Mea1Y3Mn
- Listing 29.32: So erzwingen Sie die verzögerte Ausführung.
- Book: lst-1037-book.cpp
- Godbolt: lst-1037-godb.cpp, https://godbolt.org/z/P9MjGe6Mn
- Listing 29.33: Warten für eine gewisse Zeit bei »async«
- Book: lst-1038-book.cpp
- Godbolt: lst-1038-godb.cpp, https://godbolt.org/z/o9oYrvMcj
- Listing 29.34: Warten auf einen Lock mit einem »timed_mutex«
- Book: lst-1039-book.cpp
- Godbolt: lst-1039-godb.cpp, https://godbolt.org/z/xzY8hj9oP
- Listing 29.35: Exceptions kommen erst bei »get« beim äußeren Thread an.
- Book: lst-1040-book.cpp
- Godbolt: lst-1040-godb.cpp, https://godbolt.org/z/Pj63xfn7x
- Listing 29.36: Nur das »get« muss in »try« gekapselt werden.
- Book: lst-1041-book.cpp
- Godbolt: lst-1041-godb.cpp, https://godbolt.org/z/ndc4f8T3P
- Listing 29.37: »future« und »promise« arbeiten zusammen.
- Book: lst-1043-book.cpp
- Godbolt: lst-1043-godb.cpp, https://godbolt.org/z/9Ys4s5qjs
- Listing 29.38: Packaged Task vorbereiten für die spätere Ausführung
- Book: lst-1044-book.cpp
- Godbolt: lst-1044-godb.cpp, https://godbolt.org/z/9s94nbrx3
- Listing 29.39: Packaged Task erst später mit Argumenten versorgen
- Book: lst-1045-book.cpp
- Godbolt: lst-1045-godb.cpp, https://godbolt.org/z/bq1hn5rjo
- Listing 29.40: So finden Sie heraus, ob die Operationen sperrfrei sind.
- Book: lst-1046-book.cpp
- Godbolt: lst-1046-godb.cpp, https://godbolt.org/z/3Y5WP6qWM
- Listing 29.41: Die Klasse »SpinlockMutex« verhindert das Schlafenlegen beim Warten.
- Book: lst-1047-book.cpp
- Godbolt: lst-1047-godb.cpp, https://godbolt.org/z/W47YTYcEb
- Listing 29.42: Ihre Koroutine liefert einen »generator« zurück.
- Book: lst-1048-book.cpp
- Godbolt: lst-1048-godb.cpp, https://godbolt.org/z/Gfazq6GE7
- Listing 29.43: Ein einfaches Beispiel für einen Koroutinen-Rückgabetyp mit seinem »promise_type«
- Book: lst-1049-book.cpp
- Godbolt: lst-1049-godb.cpp, https://godbolt.org/z/4ed3oWK7q
- GodboltId:veEq4dcET
- Book: lst-1052-book.cpp
- Godbolt: lst-1052-godb.cpp, https://godbolt.org/z/veEq4dcET
- GodboltId:Y8KK3nEG3
- Book: lst-1057-book.cpp
- Godbolt: lst-1057-godb.cpp, https://godbolt.org/z/Y8KK3nEG3