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

Ulrich Breymann

Der C++-Programmierer

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

2017

1010 Seiten

Format: PDF, Online Lesen

E-Book: €  31,99

E-Book kaufen

E-Book kaufen

ISBN: 9783446453869

 

Inhaltsverzeichnis

6

Vorwort

24

Teil I: Einführung in C++

28

1 Es geht los!

30

1.1 Historisches

30

1.2 Objektorientierte Programmierung

31

1.3 Werkzeuge zum Programmieren

33

1.4 Das erste Programm

34

1.4.1 Namenskonventionen

40

1.5 Integrierte Entwicklungsumgebung

40

1.6 Einfache Datentypen und Operatoren

43

1.6.1 Ausdruck

43

1.6.2 Ganze Zahlen

43

1.6.3 Reelle Zahlen

50

1.6.4 Konstanten

54

1.6.5 Zeichen

55

1.6.6 Logischer Datentyp bool

59

1.6.7 Referenzen

60

1.6.8 Regeln zum Bilden von Ausdrücken

61

1.6.9 Standard-Typumwandlungen

62

1.7 Gültigkeitsbereich und Sichtbarkeit

63

1.7.1 Namespace std

65

1.8 Kontrollstrukturen

66

1.8.1 Anweisungen

66

1.8.2 Sequenz (Reihung)

68

1.8.3 Auswahl (Selektion, Verzweigung)

68

1.8.4 Fallunterscheidungen mit switch

73

1.8.5 Wiederholungen

76

1.8.6 Kontrolle mit break und continue

83

1.9 Benutzerdefinierte und zusammengesetzte Datentypen

85

1.9.1 Aufzählungstypen

85

1.9.2 Strukturen

88

1.9.3 Der C++-Standardtyp vector

89

1.9.4 Zeichenketten: Der C++-Standardtyp string

94

1.9.5 Container und Schleifen

96

1.9.6 Typermittlung mit auto

98

1.9.7 Deklaration einer strukturierten Bindung mit auto

99

1.9.8 Unions und Bitfelder

100

1.10 Einfache Ein- und Ausgabe

102

1.10.1 Standardein- und -ausgabe

102

1.10.2 Ein- und Ausgabe mit Dateien

105

2 Programmstrukturierung

110

2.1 Funktionen

110

2.1.1 Aufbau und Prototypen

111

2.1.2 Gültigkeitsbereiche und Sichtbarkeit in Funktionen

113

2.1.3 Lokale static-Variable: Funktion mit Gedächtnis

114

2.2 Schnittstellen zum Datentransfer

115

2.2.1 Übergabe per Wert

116

2.2.2 Übergabe per Referenz

120

2.2.3 Gefahren bei der Rückgabe von Referenzen

121

2.2.4 Vorgegebene Parameterwerte und unterschiedliche Parameterzahl

122

2.2.5 Überladen von Funktionen

123

2.2.6 Funktion main()

124

2.2.7 Beispiel Taschenrechnersimulation

125

2.2.8 Spezifikation von Funktionen

130

2.2.9 Alternative Funktions-Syntax

130

2.3 Modulare Programmgestaltung

130

2.3.1 Steuerung der Übersetzung nur mit #include

131

2.3.2 Einbinden vorübersetzter Programmteile

131

2.3.3 Übersetzungseinheit, Deklaration, Definition

133

2.3.4 Dateiübergreifende Gültigkeit und Sichtbarkeit

135

2.3.5 Präprozessordirektiven und Makros

137

2.4 Namensräume

145

2.5 inline-Funktionen und -Variable

147

2.5.1 inline-Variablen

148

2.6 constexpr-Funktionen

148

2.7 Rückgabetyp auto

150

2.8 Funktions-Templates

152

2.8.1 Spezialisierung von Templates

154

2.8.2 Einbinden von Templates

155

2.9 C++-Header

157

2.9.1 Einbinden von C-Funktionen

159

3 Objektorientierung 1

160

3.1 Abstrakter Datentyp

161

3.2 Klassen und Objekte

162

3.2.1 const-Objekte und Methoden

165

3.2.2 inline-Elementfunktionen

166

3.3 Initialisierung und Konstruktoren

167

3.3.1 Standardkonstruktor

167

3.3.2 Direkte Initialisierung der Attribute

169

3.3.3 Allgemeine Konstruktoren

169

3.3.4 Kopierkonstruktor

172

3.3.5 Typumwandlungskonstruktor

175

3.3.6 Konstruktor und mehr vorgeben oder verbieten

177

3.3.7 Einheitliche Initialisierung und Sequenzkonstruktor

177

3.3.8 Delegierender Konstruktor

180

3.3.9 constexpr-Konstruktor und -Methoden

181

3.4 Beispiel: Rationale Zahlen

184

3.4.1 Aufgabenstellung

184

3.4.2 Entwurf

185

3.4.3 Implementation

188

3.5 Destruktoren

193

3.6 Wie kommt man zu Klassen und Objekten? Ein Beispiel

195

3.7 Gegenseitige Abhängigkeit von Klassen

200

4 Intermezzo: Zeiger

202

4.1 Zeiger und Adressen

203

4.2 C-Arrays

206

4.2.1 C-Array, std::size() und sizeof

208

4.2.2 Initialisierung von C-Arrays

209

4.2.3 Zeigerarithmetik

209

4.2.4 Indexoperator bei C-Arrays

210

4.2.5 C-Array mit begin() und end() durchlaufen

210

4.3 C-Zeichenketten

211

4.3.1 Schleifen und C-Strings

214

4.4 Dynamische Datenobjekte

218

4.4.1 Freigeben dynamischer Objekte

221

4.5 Zeiger und Funktionen

223

4.5.1 Parameterübergabe mit Zeigern

223

4.5.2 Array als Funktionsparameter

225

4.5.3 const und Zeiger-Parameter

226

4.5.4 Parameter des main-Programms

226

4.5.5 Gefahren bei der Rückgabe von Zeigern

227

4.6 this-Zeiger

228

4.7 Mehrdimensionale C-Arrays

230

4.7.1 Statische mehrdimensionale C-Arrays

230

4.7.2 Mehrdimensionales Array als Funktionsparameter

231

4.7.3 Dynamisch erzeugte mehrdimensionale Arrays

234

4.7.4 Klasse für dynamisches zweidimensionales Array

236

4.8 Binäre Ein-/Ausgabe

242

4.9 Zeiger auf Funktionen

245

4.10 Typumwandlungen für Zeiger

249

4.11 Zeiger auf Elementfunktionen und -daten

250

4.11.1 Zeiger auf Elementfunktionen

250

4.11.2 Zeiger auf Elementdaten

251

4.12 Komplexe Deklarationen lesen

251

4.12.1 Lesbarkeit mit typedef und using verbessern

252

4.13 Alternative zu rohen Zeigern, new und delete

254

5 Objektorientierung 2

256

5.1 Eine String-Klasse

256

5.1.1 friend-Funktionen

262

5.2 String-Ansicht

263

5.3 Klassenspezifische Daten und Funktionen

266

5.3.1 Klassenspezifische Konstante

270

5.4 Klassen-Templates

272

5.4.1 Ein Stack-Template

272

5.4.2 Stack mit statisch festgelegter Größe

274

5.5 Typbestimmung mit decltype und declval

276

6 Vererbung

280

6.1 Vererbung und Initialisierung

286

6.2 Zugriffsschutz

287

6.3 Typbeziehung zwischen Ober- und Unterklasse

289

6.4 Code-Wiederverwendung

290

6.4.1 Konstruktor erben

291

6.5 Überschreiben von Funktionen in abgeleiteten Klassen

293

6.5.1 Virtuelle Funktionen

295

6.5.2 Abstrakte Klassen

300

6.5.3 Virtueller Destruktor

305

6.5.4 Private virtuelle Funktionen

308

6.6 Probleme der Modellierung mit Vererbung

310

6.7 Mehrfachvererbung

313

6.7.1 Namenskonflikte

315

6.7.2 Virtuelle Basisklassen

316

6.8 Standard-Typumwandlungsoperatoren

320

6.9 Typinformationen zur Laufzeit

323

6.10 Using-Deklaration für protected-Funktionen

324

6.11 Private- und Protected-Vererbung

325

7 Fehlerbehandlung

330

7.1 Ausnahmebehandlung

332

7.1.1 Exception-Spezifikation in Deklarationen

335

7.1.2 Exception-Hierarchie in C++

336

7.1.3 Besondere Fehlerbehandlungsfunktionen

338

7.1.4 Erkennen logischer Fehler

339

7.1.5 Arithmetische Fehler / Division durch 0

341

7.2 Speicherbeschaffung mit new

342

7.3 Exception-Sicherheit

343

8 Überladen von Operatoren

346

8.1 Rationale Zahlen — noch einmal

348

8.1.1 Arithmetische Operatoren

348

8.1.2 Ausgabeoperator <<

350

8.2 Eine Klasse für Vektoren

352

8.2.1 Index-Operator [ ]

355

8.2.2 Zuweisungsoperator =

357

8.2.3 Mathematische Vektoren

360

8.2.4 Multiplikationsoperator

361

8.3 Inkrement-Operator ++

362

8.4 Typumwandlungsoperator

366

8.5 Smart Pointer: Operatoren -> und *

368

8.5.1 Smart Pointer und die C++-Standardbibliothek

373

8.6 Objekt als Funktion

374

8.7 new und delete überladen

376

8.7.1 Unterscheidung zwischen Heap- und Stack-Objekten

379

8.7.2 Fehlende delete-Anweisung entdecken

381

8.7.3 Eigene Speicherverwaltung für einen bestimmten Typ

382

8.7.4 Empfehlungen im Umgang mit new und delete

386

8.8 Operatoren für Literale

387

8.8.1 Stringliterale

388

8.8.2 Benutzerdefinierte Literale

389

8.9 Mehrdimensionale Matrizen

391

8.9.1 Zweidimensionale Matrix als Vektor von Vektoren

392

8.9.2 Dreidimensionale Matrix

395

8.10 Zuweisung und Vergleich bei Vererbung

397

9 Dateien und Ströme

406

9.1 Ausgabe

408

9.1.1 Formatierung der Ausgabe

408

9.2 Eingabe

411

9.3 Manipulatoren

414

9.3.1 Eigene Manipulatoren

419

9.4 Fehlerbehandlung

421

9.5 Typumwandlung von Dateiobjekten nach bool

422

9.6 Arbeit mit Dateien

423

9.6.1 Positionierung in Dateien

424

9.6.2 Lesen und Schreiben in derselben Datei

425

9.7 Umleitung auf Strings

426

9.8 Tabelle formatiert ausgeben

428

9.9 Formatierte Daten lesen

429

9.9.1 Eingabe benutzerdefinierter Typen

429

9.10 Blockweise lesen und schreiben

430

9.10.1 vector-Objekt binär lesen und schreiben

431

9.10.2 array-Objekt binär lesen und schreiben

432

9.10.3 Matrix binär lesen und schreiben

433

9.11 Ergänzungen

435

10 Die Standard Template Library (STL)

436

10.1 Container, Iteratoren, Algorithmen

437

10.2 Iteratoren im Detail

442

10.3 Beispiel verkettete Liste

443

Teil II: Fortgeschrittene Themen

448

11 Performance, Wert- und Referenzsemantik

450

11.1 Performanceproblem Wertsemantik

451

11.1.1 Auslassen der Kopie

452

11.1.2 Temporäre Objekte bei der Zuweisung

453

11.2 Referenzsemantik für R-Werte

454

11.3 Optimierung durch Referenzsemantik für R-Werte

456

11.3.1 Bewegender Konstruktor

459

11.3.2 Bewegender Zuweisungsoperator

459

11.4 Die move()-Funktion

460

11.4.1 Regel zur Template-Auswertung von &&-Parametern

462

11.5 Ein effizienter binärer Plusoperator

463

11.5.1 Return Value Optimization (RVO)

464

11.5.2 Kopien temporärer Objekte eliminieren

464

11.5.3 Verbesserung durch verzögerte Auswertung

465

11.5.4 Weitere Optimierungsmöglichkeiten

467

11.6 Rule of three/five/zero

468

11.6.1 Rule of three

468

11.6.2 Rule of five

468

11.6.3 Rule of zero

469

12 Lambda-Funktionen

470

12.1 Eigenschaften

471

12.1.1 Äquivalenz zum Funktionszeiger

472

12.1.2 Lambda-Funktion und Klasse

473

12.2 Generische Lambda-Funktionen

473

12.3 Parametererfassung mit []

476

13 Template-Metaprogrammierung

478

13.1 Grundlagen

478

13.2 Variadic Templates: Templates mit variabler Parameterzahl

481

13.2.1 Ablauf der Auswertung durch den Compiler

482

13.2.2 Anzahl der Parameter

483

13.2.3 Parameterexpansion

483

13.3 Fold-Expressions

485

13.3.1 Weitere Varianten

486

13.3.2 Fold-Expression mit Kommaoperator

487

13.4 Klassen-Template mit variabler Stelligkeit

489

14 Reguläre Ausdrücke

490

14.1 Elemente regulärer Ausdrücke

491

14.1.1 Greedy oder lazy?

493

14.2 Interaktive Auswertung

494

14.3 Auszug des regex-API

497

14.4 Verarbeitung von \n

499

14.5 Anwendungen

500

15 Threads

502

15.1 Zeit und Dauer

503

15.2 Threads

504

15.3 Die Klasse thread

508

15.3.1 Thread-Group

510

15.4 Synchronisation kritischer Abschnitte

511

15.5 Thread-Steuerung: Pausieren, Fortsetzen, Beenden

514

15.5.1 Data Race

519

15.6 Warten auf Ereignisse

519

15.7 Reader/Writer-Problem

525

15.7.1 Wenn Threads verhungern

529

15.7.2 Reader/Writer-Varianten

530

15.8 Atomare Veränderung von Variablen

530

15.9 Asynchrone verteilte Bearbeitung einer Aufgabe

533

15.10 Thread-Sicherheit

535

16 Grafische Benutzungsschnittstellen

536

16.1 Ereignisgesteuerte Programmierung

537

16.2 GUI-Programmierung mit Qt

538

16.2.1 Installation und Einsatz

538

16.2.2 Meta-Objektsystem

539

16.2.3 Der Programmablauf

540

16.2.4 Ereignis abfragen

541

16.3 Signale, Slots und Widgets

542

16.4 Dialog

551

16.5 Qt oder Standard-C++?

554

16.5.1 Threads

555

16.5.2 Verzeichnisbaum durchwandern

556

17 Internet-Anbindung

558

17.1 Protokolle

559

17.2 Adressen

559

17.3 Socket

563

17.3.1 Bidirektionale Kommunikation

566

17.3.2 UDP-Sockets

568

17.3.3 Atomuhr mit UDP abfragen

569

17.4 HTTP

572

17.4.1 Verbindung mit GET

573

17.4.2 Verbindung mit POST

578

17.5 Mini-Webserver

579

18 Datenbankanbindung

588

18.1 C++-Interface

589

18.2 Anwendungsbeispiel

593

Teil III: Ausgewählte Methoden und Werkzeuge der Softwareentwicklung

600

19 Effiziente Programmerzeugung mit make

602

19.1 Wirkungsweise

604

19.2 Variablen und Muster

606

19.3 Universelles Makefile für einfache Projekte

607

19.4 Automatische Ermittlung von Abhängigkeiten

608

19.4.1 Getrennte Verzeichnisse: src, obj, bin

610

19.5 Makefile für Verzeichnisbäume

612

19.5.1 Rekursive Make-Aufrufe

613

19.5.2 Ein Makefile für alles

615

19.6 Automatische Erzeugung von Makefiles

616

19.6.1 Makefile für rekursive Aufrufe erzeugen

617

19.7 Erzeugen von Bibliotheken

618

19.7.1 Statische Bibliotheksmodule

618

19.7.2 Dynamische Bibliotheksmodule

620

19.8 Code Bloat bei der Instanziierung von Templates vermeiden

623

19.8.1 extern-Template

624

19.9 CMake

625

19.10 GNU Autotools

627

20 Unit-Test

628

20.1 Werkzeuge

629

20.2 Test Driven Development

630

20.3 Boost Unit Test Framework

631

20.3.1 Beispiel: Testgetriebene Entwicklung einer Operatorfunktion

633

20.3.2 Fixture

637

20.3.3 Testprotokoll und Log-Level

638

20.3.4 Prüf-Makros

639

20.3.5 Kommandozeilen-Optionen

643

Teil IV: Das C++-Rezeptbuch: Tipps und Lösungen für typische Aufgaben

644

21 Sichere Programmentwicklung

646

21.1 Regeln zum Design von Methoden

646

21.2 Defensive Programmierung

648

21.2.1 double- und float-Werte richtig vergleichen

649

21.2.2 const und constexpr verwenden

650

21.2.3 Anweisungen nach for/if/while einklammern

650

21.2.4 int und unsigned/size_t nicht mischen

650

21.2.5 size_t oder auto statt unsigned int verwenden

651

21.2.6 Postfix++ mit Präfix++ implementieren

651

21.2.7 Ein Destruktor darf keine Exception werfen

652

21.2.8 explicit-Typumwandlungsoperator bevorzugen

652

21.2.9 explicit-Konstruktor für eine Typumwandlung bevorzugen

652

21.2.10 Leere Standardkonstruktoren vermeiden

652

21.2.11 Mit override Schreibfehler reduzieren

652

21.2.12 Kopieren und Zuweisung verbieten

652

21.2.13 Vererbung verbieten

653

21.2.14 Überschreiben einer virtuellen Methode verhindern

654

21.2.15 >>Rule of zero<< beachten

654

21.2.16 One Definition Rule

654

21.2.17 Defensiv Objekte löschen

654

21.2.18 Speicherbeschaffung und -freigabe kapseln

655

21.2.19 Programmierrichtlinien einhalten

655

21.3 Exception-sichere Beschaffung von Ressourcen

655

21.3.1 Sichere Verwendung von unique_ptr und shared_ptr

655

21.3.2 So vermeiden Sie new und delete!

656

21.3.3 shared_ptr für Arrays korrekt verwenden

657

21.3.4 unique_ptr für Arrays korrekt verwenden

658

21.3.5 Exception-sichere Funktion

659

21.3.6 Exception-sicherer Konstruktor

659

21.3.7 Exception-sichere Zuweisung

660

21.4 Empfehlungen zur Thread-Programmierung

661

21.4.1 Warten auf die Freigabe von Ressourcen

661

21.4.2 Deadlock-Vermeidung

662

21.4.3 notify_all oder notify_one?

662

21.4.4 Performance mit Threads verbessern?

663

22 Von der UML nach C++

664

22.1 Vererbung

664

22.2 Interface anbieten und nutzen

665

22.3 Assoziation

667

22.3.1 Aggregation

670

22.3.2 Komposition

670

23 Algorithmen für verschiedene Aufgaben

672

23.1 Algorithmen mit Strings

673

23.1.1 String splitten

673

23.1.2 String in Zahl umwandeln

674

23.1.3 Zahl in String umwandeln

676

23.1.4 Strings sprachlich richtig sortieren

677

23.1.5 Umwandlung in Klein- bzw. Großschreibung

679

23.1.6 Strings sprachlich richtig vergleichen

681

23.1.7 Von der Groß-/Kleinschreibung unabhängiger Zeichenvergleich

682

23.1.8 Von der Groß-/Kleinschreibung unabhängige Suche

683

23.2 Textverarbeitung

684

23.2.1 Datei durchsuchen

684

23.2.2 Ersetzungen in einer Datei

686

23.2.3 Lines of Code (LOC) ermitteln

688

23.2.4 Zeilen, Wörter und Zeichen einer Datei zählen

689

23.2.5 CSV-Datei lesen

689

23.2.6 Kreuzreferenzliste

690

23.3 Operationen auf Folgen

693

23.3.1 Container anzeigen

694

23.3.2 Folge mit gleichen Werten initialisieren

694

23.3.3 Folge mit Werten eines Generators initialisieren

695

23.3.4 Folge mit fortlaufenden Werten initialisieren

695

23.3.5 Summe und Produkt

696

23.3.6 Mittelwert und Standardabweichung

697

23.3.7 Skalarprodukt

697

23.3.8 Folge der Teilsummen oder -produkte

698

23.3.9 Folge der Differenzen

699

23.3.10 Kleinstes und größtes Element finden

700

23.3.11 Elemente rotieren

702

23.3.12 Elemente verwürfeln

703

23.3.13 Dubletten entfernen

703

23.3.14 Reihenfolge umdrehen

705

23.3.15 Stichprobe

706

23.3.16 Anzahl der Elemente, die einer Bedingung genügen

707

23.3.17 Gilt ein Prädikat für alle, keins oder wenigstens ein Element einer Folge?

708

23.3.18 Permutationen

709

23.3.19 Lexikografischer Vergleich

712

23.4 Sortieren und Verwandtes

713

23.4.1 Partitionieren

713

23.4.2 Sortieren

715

23.4.3 Stabiles Sortieren

716

23.4.4 Partielles Sortieren

717

23.4.5 Das n.-größte oder n.-kleinste Element finden

718

23.4.6 Verschmelzen (merge)

719

23.5 Suchen und Finden

722

23.5.1 Element finden

722

23.5.2 Element einer Menge in der Folge finden

723

23.5.3 Teilfolge finden

724

23.5.4 Teilfolge mit speziellem Algorithmus finden

725

23.5.5 Bestimmte benachbarte Elemente finden

727

23.5.6 Bestimmte aufeinanderfolgende Werte finden

728

23.5.7 Binäre Suche

729

23.6 Mengenoperationen auf sortierten Strukturen

731

23.6.1 Teilmengenrelation

732

23.6.2 Vereinigung

733

23.6.3 Schnittmenge

734

23.6.4 Differenz

734

23.6.5 Symmetrische Differenz

735

23.7 Heap-Algorithmen

736

23.7.1 pop_heap

737

23.7.2 push_heap

738

23.7.3 make_heap

738

23.7.4 sort_heap

739

23.7.5 is_heap

739

23.8 Vergleich von Containern auch ungleichen Typs

740

23.8.1 Unterschiedliche Elemente finden

740

23.8.2 Prüfung auf gleiche Inhalte

742

23.9 Rechnen mit komplexen Zahlen: Der C++-Standardtyp complex

743

23.10 Schnelle zweidimensionale Matrix

745

23.10.1 Optimierung mathematischer Array-Operationen

748

23.11 Vermischtes

751

23.11.1 Erkennung eines Datums

751

23.11.2 Erkennung einer IPv4-Adresse

753

23.11.3 Erzeugen von Zufallszahlen

754

23.11.4 for_each — Auf jedem Element eine Funktion ausführen

759

23.11.5 Verschiedene Möglichkeiten, Container-Bereiche zu kopieren

759

23.11.6 Vertauschen von Elementen, Bereichen und Containern

762

23.11.7 Elemente transformieren

762

23.11.8 Ersetzen und Varianten

764

23.11.9 Elemente herausfiltern

765

23.11.10 Grenzwerte von Zahltypen

767

23.11.11 Minimum und Maximum

767

23.11.12 Wert begrenzen

769

23.11.13 ggT und kgV

770

23.12 Parallelisierbare Algorithmen

771

24 Datei- und Verzeichnisoperationen

772

24.1 Übersicht

773

24.2 Pfadoperationen

774

24.3 Datei oder Verzeichnis löschen

775

24.3.1 Möglicherweise gefülltes Verzeichnis löschen

776

24.4 Datei oder Verzeichnis kopieren

777

24.5 Datei oder Verzeichnis umbenennen

778

24.6 Verzeichnis anlegen

778

24.7 Verzeichnis anzeigen

779

24.8 Verzeichnisbaum anzeigen

780

Teil V: Die C++-Standardbibliothek

782

25 Aufbau und Übersicht

784

25.1 Auslassungen

786

25.2 Beispiele des Buchs und die C++-Standardbibliothek

787

26 Hilfsfunktionen und -klassen

790

26.1 Relationale Operatoren

790

26.2 Unterstützung der Referenzsemantik für R-Werte

791

26.2.1 move()

791

26.2.2 forward()

792

26.3 Paare

793

26.4 Tupel

795

26.5 bitset

797

26.6 Indexfolgen

800

26.7 variant statt union

801

26.8 Funktionsobjekte

802

26.8.1 Arithmetische, vergleichende und logische Operationen

802

26.8.2 Binden von Argumentwerten

803

26.8.3 Funktionen in Objekte umwandeln

805

26.9 Templates für rationale Zahlen

807

26.10 Hüllklasse für Referenzen

808

26.11 Optionale Objekte

809

26.12 Type Traits

811

26.12.1 Wie funktionieren Type Traits? — ein Beispiel

812

26.12.2 Abfrage von Eigenschaften

814

26.12.3 Abfrage numerischer Eigenschaften

816

26.12.4 Typbeziehungen

816

26.12.5 Typumwandlungen

817

26.13 Auswahl weiterer Traits

817

26.13.1 decay

817

26.13.2 enable_if

817

26.13.3 conditional

818

26.13.4 default_order

818

27 Container

820

27.1 Gemeinsame Eigenschaften

822

27.1.1 Initialisierungslisten

824

27.1.2 Konstruktion an Ort und Stelle

824

27.1.3 Reversible Container

825

27.2 Sequenzen

826

27.2.1 vector

827

27.2.2 vector

828

27.2.3 list

829

27.2.4 deque

832

27.2.5 stack

833

27.2.6 queue

835

27.2.7 priority_queue

837

27.2.8 array

839

27.3 Assoziative Container

841

27.4 Sortierte assoziative Container

843

27.4.1 map und multimap

844

27.4.2 set und multiset

848

27.5 Hash-Container

850

27.5.1 unordered_map und unordered_multimap

854

27.5.2 unordered_set und unordered_multiset

856

28 Iteratoren

858

28.1 Iterator-Kategorien

859

28.1.1 Anwendung von Traits

860

28.2 Abstand und Bewegen

863

28.3 Zugriff auf Anfang und Ende

864

28.3.1 Reverse-Iteratoren

865

28.4 Insert-Iteratoren

866

28.5 Stream-Iteratoren

867

29 Algorithmen

870

29.1 Algorithmen mit Prädikat

871

29.2 Übersicht

872

30 Nationale Besonderheiten

876

30.1 Sprachumgebung festlegen und ändern

876

30.1.1 Die locale-Funktionen

878

30.2 Zeichensätze und -codierung

880

30.3 Zeichenklassifizierung und -umwandlung

884

30.4 Kategorien

885

30.4.1 collate

885

30.4.2 ctype

886

30.4.3 numeric

888

30.4.4 monetary

889

30.4.5 time

892

30.4.6 messages

894

30.5 Konstruktion eigener Facetten

896

31 String

898

31.1 string_view für String-Literale

908

32 Speichermanagement

910

32.1 unique_ptr

910

32.1.1 make_unique

912

32.2 shared_ptr

913

32.2.1 make_shared

914

32.2.2 Typumwandlung in einen Oberklassentyp

914

32.3 weak_ptr

915

32.4 new mit Speicherortangabe

916

33 Numerische Arrays (valarray)

918

33.1 Konstruktoren

919

33.2 Elementfunktionen

919

33.3 Binäre Valarray-Operatoren

922

33.4 Mathematische Funktionen

924

33.5 slice und slice_array

925

33.6 gslice und gslice_array

928

33.7 mask_array

931

33.8 indirect_array

932

34 Ausgewählte C-Header

934

34.1

934

34.2

935

34.3

935

34.4

937

34.5

937

34.6

938

34.7

940

A Anhang

942

A.1 ASCII-Tabelle

942

A.2 C++-Schlüsselwörter

944

A.3 Compilerbefehle

945

A.4 Rangfolge der Operatoren

946

A.5 C++-Attribute für den Compiler

947

A.6 Lösungen zu den Übungsaufgaben

948

A.7 Installation der Software für Windows

958

A.7.1 Installation des Compilers und der Entwicklungsumgebung

958

A.7.2 Integrierte Entwicklungsumgebung einrichten

959

A.7.3 De-Installation

959

A.8 Installation der Software für Linux

960

A.8.1 Installation des Compilers

960

A.8.2 Installation von Boost

961

A.8.3 Installation und Einrichtung von Code::Blocks

961

A.8.4 Beispieldateien entpacken

962

A.9 Installationshinweise für OS X

962

A.9.1 Installation von Boost

962

A.9.2 Beispieldateien entpacken

963

Glossar

964

Literaturverzeichnis

974

Register

978

1001_1008_Breymann_5A_Anzeigen.pdf

1

CHV_Anz_Seite1001_Gloger_44723

1002

CHV_Anz_Seite1001_Gloger_44723

1003

CHV_Anz_Seite1003_Leopold_44343

1004

CHV_Anz_Seite1003_Leopold_44343

1005

CHV_Anz_Seite1005_FreundRücker_5A_45054

1006

CHV_Anz_Seite1005_FreundRücker_5A_45054

1007

CHV_Anz_Seite1007_Starke_7A_44361

1008

CHV_Anz_Seite1007_Starke_7A_44361

1009

 

© 2009-2024 ciando GmbH