Ammeraal, L. (1996) C++ voor gevorderden (inclusief STL), Schoonhoven: Academic Service

Om de programma's van dit boek te verkrijgen, kunt u de file cppgevor.zip ophalen door hier te klikken.

Inhoud

1 Hoe zit dat ook alweer in C? 1
1.1 Arrays en pointers 1
1.2 Arraygrensoverschrijding 2
1.3 Wat wordt er precies gekopieerd? 3
1.4 Bits en bytes 4
1.5 Signed en unsigned 5
1.6 Evaluatie: volgorde meestal ongedefinieerd 6
1.7 Een toepassing 8
1.8 Geavanceerd pointergebruik 10
1.9 Sorteren met de standaardfunctie qsort 17
Opgaven 22

2 C++ als 'een betere taal C' 24
2.1 Karakters, namen, commentaar, cast 24
2.2 Functies: verbeteringen en aanvullingen 26
2.3 Constanten en inline-functies 35
2.4 Declaraties 37
2.5 De conditionele expressie als lvalue 39
2.6 Eenvoudige invoer en uitvoer 39
2.7 Geheugenruimte: new en delete 41
Opgaven 44

3 Klassen en objecten 45
3.1 Encapsulatie 45
3.2 Lidfuncties definiëren buiten de klasse 47
3.3 Constructoren en destructoren 49
3.4 Eigen operatoren en 'friend-functies' 56
3.5 Constructoren en typeconversie 63
3.6 Het kopiëren van een klasse-object 65
3.7 Het begrip 'anonymous union' 67
Opgaven 70

4 Afgeleide klassen 71
4.1 Interface, implementatie en applicatie 71
4.2 Afgeleide klassen en overerving 74
4.3 Virtuele functies en late binding 82
4.4 Statische klasseleden 86
4.5 Pointers naar klasseleden 87
4.6 Herbruikbare code en polymorfisme 89
Opgaven 95

5 Stream I/O 97
5.1 Standaard 'streams' 97
5.2 Uitvoer 97
5.3 Invoer 104
5.4 Files 107
5.5 Random access; statusbits 111
5.6 Eigen manipulatoren zonder parameters 115
5.7 Eigen manipulatoren met een parameter 117
Opgaven 119

6 Templates 120
6.1 Inleiding 120
6.2 Functie-templates 120
6.3 Klasse-templates 125
6.4 Een template voor quicksort 129
Opgaven 133

7 Exceptie-afhandeling 134
7.1 Fouten en excepties 134
7.2 Het gebruik van try, catch en throw 136
7.3 Foutafhandeling bij de operator new 141
7.4 De functie set_terminate 143
7.5 Exceptie-specificaties en set_unexpected 145
Opgaven 147

8 Nieuwe taalelementen en STL 148
8.1 Het standaardtype bool 148
8.2 Het begrip namespace 148
8.3 Headers 150
8.4 Het type string 150
8.5 Wat is STL? 153
8.6 Vector-containers: lidfuncties en algoritmen 157
8.7 Andere sequence-containers: deque en list 160
8.8 Iteratorcategorieën 163
8.9 Speciale lidfuncties voor lists 164
8.10 Functie-objecten 168
Opgaven 170

9 Meer containers 171
9.1 Stacks 171
9.2 Queues 173
9.3 Priority-queues 174
9.4 Sets 177
9.5 Multisets 179
9.6 Maps en de klasse-template pair 180
9.7 Multimaps 183
Opgaven 184

10 Algoritmen 185
10.1 Niet-muterende algoritmen 185
10.1.1 Iets opzoeken 185
10.1.2 Tellen 187
10.1.3 Een functie uitvoeren in een lus 187
10.1.4 Opeenvolgende elementen 188
10.1.5 Zoeken naar overeenkomstige elementen die verschillen 188
10.1.6 Testen of twee rijen gelijk zijn 189
10.1.7 Komt binnen een rij een andere gegeven rij voor? 189
10.2 Muterende algoritmen 190
10.2.1 Een rij genereren uit één of twee gegeven rijen 190
10.2.2 Kopiëren 192
10.2.3 Roteren 193
10.2.4 Verwisselen 194
10.2.5 Vervangen 195
10.2.6 Opgezochte elementen verwijderen 196
10.2.7 Een rij vullen 197
10.2.8 Elementen genereren 198
10.2.9 Duplicaten verwijderen 199
10.2.10 Een rij omkeren 200
10.2.11 Elementen in aselecte volgorde plaatsen 200
10.2.12 Splitsen in partities 201
10.3 Algoritmen in verband met sorteren 202
10.3.1 Sorteren met sort en stable_sort 202
10.3.2 Partieel sorteren 203
10.3.3 Het n-de element bepalen 204
10.3.4 Binair zoeken 205
10.3.5 Samenvoegen 206
10.3.6 Verzamelingsbewerkingen op gesorteerde structuren 207
10.3.7 Bewerkingen met een heap 208
10.3.8 Minimum en maximum 209
10.3.9 Lexicografische vergelijking 210
10.3.10 Permutaties genereren 211
10.4 Rekenalgoritmen 211
10.4.1 Som, product, etc. van een rij bepalen 211
10.4.2 Het inwendig product 212
10.4.3 Cumulatieve sommen 213
10.4.4 Opeenvolgende verschillen 213
Opgaven 214

Literatuur 215

Index 216

Back to list of recent books by the same author