C++ L’essentiel du code et des commandes - Bibliolivre.com.pdf


Aperçu du fichier PDF c-l-essentiel-du-code-et-des-commandes-bibliolivre-com.pdf - Page 1/49
C++
L’ESSENTIEL DU CODE ET DES COMMANDES

LE GUIDE DE SUR VIE

LE GUIDE DE SURVIE

CONCIS ET MANIABLE
Facile à transporter, facile à utiliser — finis les livres
encombrants !

PRATIQUE ET FONCTIONNEL
Plus de 150 séquences de code pour programmer
rapidement et efficacement en C++.
Vincent Gouvernelle est ingénieur en informatique, diplômé
de l’ESIL à Marseille, et titulaire d’un DEA en informatique.
Il travaille actuellement chez Sescoi R&D, société éditrice de
logiciels spécialisés dans la CFAO (conception et fabrication
assistée par ordinateur).

C++

Ce Guide de survie est le compagnon indispensable
pour programmer en C++ et utiliser efficacement les
bibliothèques standard STL et BOOST, ainsi que QT,
wxWidget et SQLite. Cet ouvrage prend en compte la
future norme C++0x.

Vincent Gouvernelle

LE GUIDE DE SURVIE

http://bibliolivre.com

C++
L’ESSENTIEL DU CODE ET DES COMMANDES

Niveau : Intermédiaire / Avancé
Catégorie : Programmation
Configuration : Multiplate-forme

Pearson Education France
47 bis, rue des Vinaigriers
75010 Paris
Tél. : 01 72 74 90 00
Fax : 01 42 05 22 17
www.pearson.fr

2281-GS C++.indd 1

ISBN : 978-2-7440-4011-5

V. Gouvernelle

11/05/09 15:56:39

Pearson Education France a apporté le plus grand soin à la réalisation de ce livre
afin de vous fournir une information complète et fiable. Cependant, Pearson
Education France n’assume de responsabilités, ni pour son utilisation, ni pour les
contrefaçons de brevets ou atteintes aux droits de tierces personnes qui pourraient
résulter de cette utilisation.
Les exemples ou les programmes présents dans cet ouvrage sont fournis pour
illustrer les descrip­tions théoriques. Ils ne sont en aucun cas destinés à une utilisation commerciale ou professionnelle.
Pearson Education France ne pourra en aucun cas être tenu pour responsable
des préjudices ou dommages de quelque nature que ce soit pouvant résulter de
l’utilisation de ces exemples ou programmes.
Tous les noms de produits ou marques cités dans ce livre sont des marques déposées
par leurs ­pro­priétaires respectifs.

Publié par Pearson Education France
47 bis, rue des Vinaigriers
75010 PARIS
Tél. : 01 72 74 90 00
www.pearson.fr
Relecteurs techniques : Philippe Georges et Yves Mettier
Collaboration éditoriale : Jean-Philippe Moreux
Réalisation pao : Léa B.
ISBN : 978-2-7440-4011-5
Copyright © 2009
Pearson Education France

Tous droits réservés

Aucune représentation ou reproduction, même partielle, autre que celles prévues à
l’article L. 122-5 2˚ et 3˚ a) du code de la propriété intellectuelle ne peut être faite
sans l’autorisation expresse de Pearson Education France ou, le cas échéant, sans le
respect des modalités prévues à l’article L. 122-10 dudit code.

Table des matières
Télécharger la version complète Sur http://bibliolivre.com
1 Bases héritées du langage C . . . . . . . . . . . .
Hello world en C . . . . . . . . . . . . . . . . . . . . .
Commentaires . . . . . . . . . . . . . . . . . . . . . .
Types fondamentaux . . . . . . . . . . . . . . . . . . .
Types élaborés . . . . . . . . . . . . . . . . . . . . . .
Structures conditionnelles . . . . . . . . . . . . . . . .
Structures de boucle . . . . . . . . . . . . . . . . . . .
Sauts . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fonctions . . . . . . . . . . . . . . . . . . . . . . . . .
Préprocesseur . . . . . . . . . . . . . . . . . . . . . . .
Opérateurs et priorité (C et C++) . . . . . . . . . . . .












1
1
3
4
6
9
12
14
15
16
18

2 Bases du langage C++ . . . . . . . . . . . . . . . 23
Hello world en C++ . . . . . . . . . . . . . . . . . . .
Les mots-clés . . . . . . . . . . . . . . . . . . . . . . .
Les constantes . . . . . . . . . . . . . . . . . . . . . .
Déclarations de variables . . . . . . . . . . . . . . . .
Les nouveaux types de variables du C++ . . . . . . . .
Conversion de type C . . . . . . . . . . . . . . . . . . .
Conversion avec static_cast . . . . . . . . . . . . . . .
Conversion avec const_cast . . . . . . . . . . . . . . .
Conversion avec reinterpret_cast . . . . . . . . . . . . . . . .
Conversion avec dynamic_cast . . . . . . . . . . . . .
Surcharge . . . . . . . . . . . . . . . . . . . . . . . . .
Les espaces de noms . . . . . . . . . . . . . . . . . . .
Incompatibilités avec le C . . . . . . . . . . . . . . . .
Lier du code C et C++ . . . . . . . . . . . . . . . . . .
Embarquer une fonction . . . . . . . . . . . . . . . . .
Constantes usuelles . . . . . . . . . . . . . . . . . . .

23
24
25
27
29
32
33
34
35
36
37
40
42
44
46
46

Télécharger la version complète Sur http://bibliolivre.com
IV

C++

3 Pointeurs et références . . . . . . . . . . . . . . . 47
Créer et initialiser un pointeur . . . . . . . . . . . . . .
Accéder aux données ou fonctions membres . . . . . .
Créer et utiliser une référence . . . . . . . . . . . . . .
Déclarer un pointeur sur un tableau . . . . . . . . . . .
Déclarer un pointeur sur une fonction . . . . . . . . .
Passer un objet en paramètre par pointeur/référence .








48
49
50
50
54
57

4 Classes et objets . . . . . . . . . . . . . . . . . . . 59
Ajouter des données à des objets . . . . . . . . . . . .
Lier des fonctions à des objets . . . . . . . . . . . . . .
Déterminer la visibilité de fonctions
ou de données membres . . . . . . . . . . . . . . . . .
Expliciter une instance avec le pointeur this . . . . . .
Définir un constructeur/destructeur . . . . . . . . . . .
Empêcher le compilateur de convertir
une donnée en une autre . . . . . . . . . . . . . . . .
Spécifier qu’une fonction membre
ne modifie pas l’objet lié . . . . . . . . . . . . . . . . .
Rendre une fonction/donnée membre
indépendante de l’objet lié . . . . . . . . . . . . . . . .
Comprendre le changement de visibilité
lors de l’héritage . . . . . . . . . . . . . . . . . . . . .
Comprendre les subtilités de l’héritage multiple . . . .
Empêcher la duplication de données
avec l’héritage virtuel . . . . . . . . . . . . . . . . . .
Simuler un constructeur virtuel . . . . . . . . . . . . .
Créer un type abstrait à l’aide du polymorphisme . . .
Utiliser l’encapsulation pour sécuriser un objet . . . . .
Obtenir des informations de types dynamiquement . .
Transformer un objet en fonction . . . . . . . . . . . .

60
62
64
67
68
70
72
73
74
78







79
80
82
85
86
88

Télécharger la version complète Sur http://bibliolivre.com

Table des matières



5 Templates et métaprogrammation . . . . . . . . 95
Créer un modèle de classe réutilisable . . . . . . . . . 96
Créer une bibliothèque avec des templates . . . . . . . 99
Utiliser un type indirect dans un template . . . . . . . . . 101
Changer l’implémentation par défaut fournie
par un template . . . . . . . . . . . . . . . . . . . . . 102
Spécialiser partiellement l’implémentation
d’un template . . . . . . . . . . . . . . . . . . . . . . 104
Spécialiser une fonction membre . . . . . . . . . . . . 105
Exécuter du code à la compilation . . . . . . . . . . . 106
Créer des méta-opérateurs/métabranchements . . . . 108
Avantages et inconvénients de la métaprogrammation 111

6 Gestion de la mémoire . . . . . . . . . . . . . . . 113
Réserver et libérer la mémoire . . . . . . . . . . . . . .
Redéfinir le système d’allocation mémoire . . . . . .
Simuler une allocation d’objet à une adresse connue .
Traiter un échec de réservation mémoire . . . . . . . .
Désactiver le système d’exception lors de l’allocation .
Optimiser l’allocation avec un pool mémoire . . . . . .

113
114
115
116
119
120

7 Exceptions . . . . . . . . . . . . . . . . . . . . . . 123
Principe . . . . . . . . . . . . . . . . . . . . . . . . . .
Transmettre une exception . . . . . . . . . . . . . . .
Expliciter les exceptions . . . . . . . . . . . . . . . . .
Utiliser ses propres implémentations
des fonctions terminate() et unexpected() . . . . . . .
Utiliser les exceptions pour la gestion des ressources .
Exceptions de la STL . . . . . . . . . . . . . . . . . . .

123
127
129
131
132
134

Télécharger la version complète Sur http://bibliolivre.com

VI

C++

8 Itérateurs . . . . . . . . . . . . . . . . . . . . . . . 137
Les différents concepts . . . . . . . . . . . . . . . . . .
Comprendre les iterator_traits . . . . . . . . . . . . .
Calculer la distance entre deux itérateurs . . . . . . . .
Déplacer un itérateur vers une autre position . . . . .
Comprendre les itérateurs sur flux d’entrée/lecture . .
Comprendre les itérateurs sur flux de sortie/écriture . .
Utiliser les itérateurs de parcours inversé . . . . . . .
Utiliser les itérateurs d’insertion . . . . . . . . . . . . .
Utiliser les itérateurs d’insertion
en début de conteneur . . . . . . . . . . . . . . . . .
Utiliser les itérateurs d’insertion
en fin de conteneur . . . . . . . . . . . . . . . . . . .

138
140
142
144
145
146
146
148



149
150

9 Conteneurs standard . . . . . . . . . . . . . . . . 151
Créer un conteneur . . . . . . . . . . . . . . . . . . . .
Ajouter et supprimer dans un conteneur séquentiel . .
Parcourir un conteneur . . . . . . . . . . . . . . . . . .
Accéder à un élément d’un conteneur . . . . . . . . . .
Créer et utiliser un tableau . . . . . . . . . . . . . . .
Créer et utiliser une liste chaînée . . . . . . . . . . . .
Créer et utiliser une file à double entrée . . . . . . . .
Créer et utiliser une pile . . . . . . . . . . . . . . . . .
Créer et utiliser une queue . . . . . . . . . . . . . . . .
Créer et utiliser une queue de priorité . . . . . . . . . .
Créer et utiliser un ensemble . . . . . . . . . . . . . .
Créer et utiliser une table associative . . . . . . . . . .
Créer et utiliser une table de hachage . . . . . . . . .
Connaître la complexité des fonctions membres
des conteneurs . . . . . . . . . . . . . . . . . . . . . .

152
153
154
156
158
160
161
163
164
165
166
167
170
173

Table des matières

10 Chaînes de caractères . . . . . . . . . . . . . . . . 177
Créer une chaîne . . . . . . . . . . . . . . . . . . . . .
Connaître la longueur d’une chaîne . . . . . . . . . . .
Comparer des chaînes . . . . . . . . . . . . . . . . . .
Échanger le contenu de deux chaînes . . . . . . . . . .
Rechercher une sous-chaîne . . . . . . . . . . . . . . .
Extraire une sous-chaîne . . . . . . . . . . . . . . . . .
Remplacer une partie d’une chaîne . . . . . . . . . . .
Insérer dans une chaîne . . . . . . . . . . . . . . . . .
Concaténer des chaînes . . . . . . . . . . . . . . . . .
Effacer une partie d’une chaîne . . . . . . . . . . . . .
Lire des lignes dans un flux . . . . . . . . . . . . . . .

178
180
180
181
182
184
185
187
188
189
190

11 Fichiers et flux . . . . . . . . . . . . . . . . . . . . 193
Ouvrir un fichier . . . . . . . . . . . . . . . . . . . . .
Tester l’état d’un flux . . . . . . . . . . . . . . . . . . .
Lire dans un fichier . . . . . . . . . . . . . . . . . . . .
Écrire dans un fichier . . . . . . . . . . . . . . . . . . .
Se déplacer dans un flux . . . . . . . . . . . . . . . . .
Manipuler des flux . . . . . . . . . . . . . . . . . . . .
Manipuler une chaîne de caractères comme un flux . .
Écrire dans une chaîne de caractère comme
dans un flux . . . . . . . . . . . . . . . . . . . . . . .
Lire le contenu d’une chaîne comme avec un flux . . .

194
195
197
200
201
202
205
206
206

12 Algorithmes standard . . . . . . . . . . . . . . . . 209
Calculer la somme des éléments d’une séquence . . . . 214
Calculer les différences entre éléments consécutifs
d’une séquence . . . . . . . . . . . . . . . . . . . . . 215
Chercher la première occurrence de deux éléments
consécutifs identiques . . . . . . . . . . . . . . . . . . 217

VII

VIII

C++

Rechercher un élément dans une séquence . . . . . . . 218
Copier les éléments d’une séquence dans une autre . . 219
Copier les éléments d’une séquence dans une autre
en commençant par la fin . . . . . . . . . . . . . . . . 221
Copier les n premiers éléments d’une séquence
dans une autre . . . . . . . . . . . . . . . . . . . . . . 222
Compter le nombre d’éléments correspondant
à une valeur donnée . . . . . . . . . . . . . . . . . . . 223
Compter le nombre d’éléments conformes
à un test donné . . . . . . . . . . . . . . . . . . . . . 224
Tester si deux séquences sont identiques . . . . . . . . 225
Chercher la sous-séquence d’éléments tous égaux
à un certain élément . . . . . . . . . . . . . . . . . . . 226
Initialiser une séquence . . . . . . . . . . . . . . . . . 228
Chercher le premier élément tel que… . . . . . . . . . 228
Chercher le premier élément parmi… . . . . . . . . . . 229
Appliquer une fonction/foncteur sur
tous les éléments d’une séquence . . . . . . . . . . . . 230
Initialiser une séquence à l’aide d’un générateur
de valeurs . . . . . . . . . . . . . . . . . . . . . . . . . 231
Tester si tous les éléments d’une séquence
sont dans une autre . . . . . . . . . . . . . . . . . . . 232
Calculer le produit intérieur (produit scalaire
généralisé) de deux séquences . . . . . . . . . . . . . . 234
Initialiser les éléments d’une séquence
avec une valeur (en l’incrémentant) . . . . . . . . . . . 235
Transformer une séquence en tas et l’utiliser . . . . . . 236
Comparer lexicographiquement deux séquences . . . . 238
Chercher le premier/dernier endroit où insérer
une valeur sans briser l’ordre d’une séquence . . . . . . 241
Fusionner deux séquences triées . . . . . . . . . . . . 243
Récupérer le plus petit/grand élément . . . . . . . . . 245
Récupérer le plus petit/grand élément d’une séquence 246
Trouver le premier endroit où deux séquences diffèrent 247

Table des matières

Générer la prochaine plus petite/grande permutation
lexicographique d’une séquence . . . . . . . . . . . . .
Faire en sorte que le nième élément soit le même
que si la séquence était triée . . . . . . . . . . . . . .
Trier les n premiers éléments d’une séquence . . . . . .
Copier les n plus petits éléments d’une séquence . . . .
Calculer une somme partielle généralisée
d’une séquence . . . . . . . . . . . . . . . . . . . . . .
Couper la séquence en deux en fonction d’un prédicat
Calculer xi (fonction puissance généralisée) . . . . . .
Copier aléatoirement un échantillon d’une séquence .
Copier aléatoirement un sous-échantillon
(de n éléments), en préservant leur ordre d’origine . . .
Mélanger les éléments d’une séquence . . . . . . . . .
Supprimer certains éléments d’une séquence . . . . . .
Copier une séquence en omettant certains éléments . .
Remplacer certains éléments d’une séquence . . . . .
Inverser l’ordre de la séquence . . . . . . . . . . . . .
Effectuer une rotation des éléments de la séquence . .
Chercher une sous-séquence . . . . . . . . . . . . . .
Construire la différence de deux séquences triées . . .
Construire l’intersection de deux séquences triées . . .
Construire la différence symétrique des
deux séquences triées . . . . . . . . . . . . . . . . . . .
Construire l’union de deux séquences triées . . . . . .
Trier une séquence . . . . . . . . . . . . . . . . . . . .
Échanger le contenu de deux variables, itérateurs
ou séquences . . . . . . . . . . . . . . . . . . . . . . .
Transformer une (ou deux) séquences en une autre . .
Supprimer les doublons d’une séquence
(dans ou lors d’une copie) . . . . . . . . . . . . . . . .
Copier à l’aide du constructeur par copie . . . . . . . .
Initialiser à l’aide du constructeur par copie . . . . . .

248
250
251
252
253
254
256
257
258
259
260
262
263
264
264
265
268
270
272
273
274
275
276
278
281
282

IX

Télécharger le fichier



Métadonnées


  • Format du fichier: PDF 1.6
  • 323 Ko, 49 pages
  • Envoyé le 10/06/2015 à 19:41
  • Confidentialité: fichier public
  • Page de téléchargement vue 1326 fois
  • Auteur: Vinvent Gouvernelle
  • Crée par: Adobe InDesign CS2 (4.0)
  • Résolution: 317.896 x 524.695 pts