You are previewing C++: L'essentiel du code et des commandes, 2e édition.
O'Reilly logo
C++: L'essentiel du code et des commandes, 2e édition

Book Description

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 nouvelle norme C++11 et toutes les nouveautés du langage.

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++.

Table of Contents

  1. Coverpage
  2. Titlepage
  3. Copyright
  4. Table des matières
  5. À propos de l’auteur
  6. Introduction
  7. 1 Bases héritées du langage C
    1. Hello world en C
    2. Commentaires
    3. Types fondamentaux
    4. Types élaborés
    5. Structures conditionnelles
    6. Structures de boucle
    7. Sauts
    8. Fonctions
    9. Préprocesseur
    10. Opérateurs et priorité (C et C++)
  8. 2 Bases du langage C++
    1. Hello world en C++
    2. Les mots-clés
    3. Déclarations de variables
    4. Les types de variables spécifiques au C++
    5. Type automatique en C++11
    6. Conversion de type C
    7. Conversion avec static_cast
    8. Conversion avec const_cast
    9. Conversion avec reinterpret_cast
    10. Conversion avec dynamic_cast
    11. Surcharge
    12. Les espaces de noms
    13. Incompatibilités avec le C
    14. Lier du code C et C++
    15. Embarquer une fonction
    16. Constantes usuelles
  9. 3 Pointeurs et références
    1. Créer et initialiser un pointeur
    2. Pointeur nul en C++11
    3. Accéder aux données ou fonctions membres
    4. Créer et utiliser une référence
    5. Déclarer un pointeur sur un tableau
    6. Déclarer un pointeur sur une fonction
    7. Passer un objet en paramètre par pointeur/référence
  10. 4 Classes et objets
    1. Ajouter des données à des objets
    2. Lier des fonctions à des objets
    3. Déterminer la visibilité de fonctions ou de données membres
    4. Expliciter une instance avec le pointeur this
    5. Définir un constructeur/destructeur
    6. Délégation de construction en C++11
    7. Héritage des constructeurs en C++11
    8. Constructeur et destructeur par défaut en C++11
    9. Listes d’initialisation en C++11
    10. Initialisation uniformisée en C++11
    11. Empêcher le compilateur de convertir une donnée en une autre
    12. Spécifier qu’une fonction membre ne modifie pas l’objet lié
    13. Rendre une fonction/donnée membre indépendante de l’objet lié
    14. Comprendre le changement de visibilité lors de l’héritage
    15. Comprendre les subtilités de l’héritage multiple
    16. Empêcher la duplication de données avec l’héritage virtuel
    17. Simuler un constructeur virtuel
    18. Créer un type abstrait à l’aide du polymorphisme
    19. Utiliser l’encapsulation pour sécuriser un objet
    20. Obtenir des informations de types dynamiquement
    21. Transformer un objet en fonction
    22. Lambda fonctions et lambda expressions en C++11
  11. 5 Templates et métaprogrammation
    1. Créer un modèle de classe réutilisable
    2. Les variadic templates en C++11
    3. Tuple en C++11
    4. Créer une bibliothèque avec des templates
    5. Utiliser un type indirect  dans un template
    6. Changer l’implémentation par défaut fournie par un template
    7. Spécialiser partiellement l’implémentation d’un template
    8. Spécialiser une fonction membre
    9. Exécuter du code à la compilation
    10. Créer des méta-opérateurs/métabranchements
    11. Avantages et inconvénients de la métaprogrammation
  12. 6 Gestion de la mémoire
    1. Réserver et libérer la mémoire
    2. Forcer l’alignement mémoire en C++11
    3. Redéfinir le système d’allocation mémoire
    4. Simuler une allocation d’objet à une adresse connue
    5. Traiter un échec de réservation mémoire
    6. Désactiver le système d’exception lors de l’allocation
    7. Optimiser l’allocation avec un pool mémoire
    8. Variable locale à un thread en C++11
  13. 7 Exceptions
    1. Principe
    2. Transmettre une exception
    3. Expliciter les exceptions
    4. Opérateur noexcept en C++11
    5. Utiliser ses propres implémentations des fonctions terminate() et unexpected()
    6. Utiliser les exceptions pour la gestion des ressources
    7. Exceptions de la STL
  14. 8 Itérateurs
    1. Les différents concepts
    2. Comprendre les iterator_traits
    3. Calculer la distance entre deux itérateurs
    4. Déplacer un itérateur vers une autre position
    5. Comprendre les itérateurs sur flux d’entrée/lecture
    6. Comprendre les itérateurs sur flux de sortie/écriture
    7. Utiliser les itérateurs de parcours inversé
    8. Utiliser les itérateurs d’insertion
    9. Utiliser les itérateurs d’insertion en début de conteneur
    10. Utiliser les itérateurs d’insertion en fin de conteneur
  15. 9 Conteneurs standard
    1. Créer un conteneur
    2. Ajouter et supprimer dans un conteneur séquentiel
    3. Parcourir un conteneur
    4. Accéder à un élément d’un conteneur
    5. Créer et utiliser un tableau
    6. Créer et utiliser une liste chaînée
    7. Créer et utiliser une file à double entrée
    8. Créer et utiliser une pile
    9. Créer et utiliser une queue
    10. Créer et utiliser une queue de priorité
    11. Créer et utiliser un ensemble
    12. Créer et utiliser une table associative
    13. Créer et utiliser une table de hachage
    14. Connaître la complexité des fonctions membres des conteneurs
  16. 10 Chaînes de caractères
    1. Créer une chaîne
    2. Unicode et chaînes littérales en C++11
    3. Connaître la longueur d’une chaîne
    4. Comparer des chaînes
    5. Échanger le contenu de deux chaînes
    6. Rechercher une sous-chaîne
    7. Extraire une sous-chaîne
    8. Remplacer une partie d’une chaîne
    9. Insérer dans une chaîne
    10. Concaténer des chaînes
    11. Effacer une partie d’une chaîne
    12. Lire des lignes dans un flux
  17. 11 Fichiers et flux
    1. Ouvrir un fichier
    2. Tester l’état d’un flux
    3. Lire dans un fichier
    4. Écrire dans un fichier
    5. Se déplacer dans un flux
    6. Manipuler des flux
    7. Manipuler une chaîne de caractères comme un flux
    8. Écrire dans une chaîne de caractère comme dans un flux
    9. Lire le contenu d’une chaîne comme avec un flux
  18. 12 Algorithmes standard
    1. Calculer la somme des éléments d’une séquence
    2. Calculer les différences entre éléments consécutifs d’une séquence
    3. Chercher la première occurrence de deux éléments consécutifs identiques
    4. Rechercher un élément dans une séquence
    5. Copier les éléments d’une séquence dans une autre
    6. Copier les éléments d’une séquence dans une autre en commençant par la fin
    7. Copier les n premiers éléments d’une séquence dans une autre
    8. Compter le nombre d’éléments correspondant à une valeur donnée
    9. Compter le nombre d’éléments conformes à un test donné
    10. Tester si deux séquences sont identiques
    11. Chercher la sous-séquence d’éléments tous égaux à un certain élément
    12. Initialiser une séquence
    13. Chercher le premier élément tel que…
    14. Chercher le premier élément parmi…
    15. Appliquer une fonction/foncteur sur tous les éléments d’une séquence
    16. Initialiser une séquence à l’aide d’un générateur de valeurs
    17. Tester si tous les éléments d’une séquence sont dans une autre
    18. Calculer le produit intérieur (produit scalaire généralisé) de deux séquences
    19. Initialiser les éléments d’une séquence avec une valeur (en l’incrémentant)
    20. Transformer une séquence en tas et l’utiliser
    21. Comparer lexicographiquement deux séquences
    22. Chercher le premier/dernier endroit où insérer une valeur sans briser l’ordre d’une séquence
    23. Fusionner deux séquences triées
    24. Récupérer le plus petit/grand élément
    25. Récupérer le plus petit/grand élément d’une séquence
    26. Trouver le premier endroit où deux séquences diffèrent
    27. Générer la prochaine plus petite/grande permutation lexicographique d'une séquence
    28. Faire en sorte que le n-ième élément soit le même que si la séquence était triée
    29. Trier les n premiers éléments d'une séquence
    30. Copier les n plus petits éléments d’une séquence
    31. Calculer une somme partielle généralisée d’une séquence
    32. Couper la séquence en deux en fonction d’un prédicat
    33. Calculer xi (fonction puissance généralisée)
    34. Copier aléatoirement un échantillon d’une séquence
    35. Copier aléatoirement un  sous-échantillon (de n éléments), en préservant leur ordre d’origine
    36. Mélanger les éléments d'une séquence
    37. Supprimer certains éléments d’une séquence
    38. Copier une séquence en omettant certains éléments
    39. Remplacer certains éléments d’une séquence
    40. Inverser l’ordre de la séquence
    41. Effectuer une rotation des éléments de la séquence
    42. Chercher une sous-séquence
    43. Construire la différence  de deux séquences triées
    44. Construire l’intersection de deux séquences triées
    45. Construire la différence symétrique des deux séquences triées
    46. Construire l’union de  deux séquences triées
    47. Trier une séquence
    48. Échanger le contenu de deux variables, itérateurs ou séquences
    49. Transformer une (ou deux) séquences en une autre
    50. Supprimer les doublons d'une séquence (dans ou lors d’une copie)
    51. Copier à l’aide du constructeur par copie
    52. Initialiser à l’aide du constructeur par copie
  19. 13 BOOST
    1. Mettre en forme des arguments selon une chaîne de formatage
    2. Convertir une donnée en chaîne de caractères
    3. Construire et utiliser une expression régulière
    4. Éviter les pertes mémoire grâce aux pointeurs intelligents
    5. Créer des unions de types sécurisées
    6. Parcourir un conteneur avec BOOST_FOREACH
    7. Générer des messages d’erreur pendant le processus de compilation
  20. 14 Programmation multithread avec QT
    1. Créer un thread
    2. Partager des ressources
    3. Se protéger contre l’accès simultané à une ressource avec les mutex
    4. Contrôler le nombre d’accès simultanés à une ressource avec les sémaphores
    5. Prévenir le compilateur de l’utilisation d’une variable dans plusieurs thread volatile
  21. 15 Base de données
    1. Savoir quand utiliser SQLite
    2. Créer et utiliser une base avec l’interpréteur SQLite
    3. Créer/ouvrir une base (SQLite)
    4. Lancer une requête avec SQLite
    5. Fermer une base (SQLite)
    6. Créer une table (requête SQL)
    7. Accéder aux données d’une table (requête SQL)
    8. Définir un environnement ODBC (wxWidgets)
    9. Se connecter à une base (wxWidgets)
    10. Créer la définition de la table et l’ouvrir (wxWidgets)
    11. Utiliser la table (wxWidgets)
    12. Fermer la table (wxWidgets)
    13. Fermer la connexion à la base (wxWidgets)
    14. Libérer l'environnement ODBC (wxWidgets)
  22. 16 XML
    1. Charger un fichier XML
    2. Manipuler des données XML
  23. Annexe A Bibliothèques et compilateurs
    1. Compilateurs
    2. IDE et RAD
    3. Bibliothèques
    4. Bibliothèques à dominante graphique
    5. Utilitaires
  24. Annexe B Patienter en attendant la future norme C++
    1. Concepts
    2. En attendant…
  25. Annexe C Conventions d’appel x86
    1. Convention d’appel cdecl
    2. Convention d’appel pascal
    3. Convention d’appel stdcall
    4. Convention d’appel fastcall
    5. Convention d’appel thiscall
  26. Index