Détails :
Durée :
5 Jours
Prérequis :
Public :
Objectifs :
- Approfondir la généricité et les templates en C++
- Utiliser expressions régulières pour manipuler chaînes de caractères
- Gérer les copies et "move" en C++
- Implémenter RAII et "Smart Pointers" en C++
- Exploiter typeinfo et la réflexion en C++
- Utiliser la STL pour gérer les conteneurs et algorithmes
- Appliquer la programmation fonctionnelle avec lambdas et binding
- Manipuler le système de fichiers avec la librairie filesystem
- Programmer en multi-tâches avec la librairie thread
- Maîtriser synchronisation et performances en programmation multi-tâches
Demande de devis :
Devis :
Si vous souhaitez être contacté et obtenir plus d'informations sur cette formation
veuillez remplir notre formulaire de mise en relation.
Cursus de formation :
Programme détaillé de la formation :
- Définitions de méthodes et de classes génériques
- Template avec types par défaut
- Déclaration de variables locales et le mot clé typename
- Template à nombre variable de types
- Spécialisation de template
- Notions de « traits » et l'entête <traits>
- La librairie <string>
- Qu'est-ce qu'une expression régulière ?
- Le langage d'expression régulière proposé par C++
- Mise en correspondance, remplacement et extraction d'informations
- Les expressions régulières gourmandes
- Travaux pratiques : utilisation d'expressions régulières pour réaliser des mises en correspondances, des remplacements et des extractions d'informations
- Compléments Boost pour la manipulation de chaînes de caractères
- Travaux pratiques : utilisation des compléments offerts par Boost
- Opérateurs de copie et constructeurs par copie
- Correctement réaliser les copies
- Interdire les copies
- Opérateurs et constructeurs de « move »
- Travaux pratiques : corrections de bugs relatifs à la copie d'objets et retrait des fonctionnalités de copie
- Introduction à RAII (Resource Acquisition Is Initialization)
- Mise en oeuvre d'une classe générique de « Smart Pointers »
- Problématique des cycles de pointeur
- Travaux pratiques : Implémentation d'une classe de « Smart Pointers »
- Les différentes classes de « Smart Pointers » proposées en C++ ISO
- Travaux pratiques : utilisation des classes standards de « Smart Pointers »
- La librairie <typeinfo>
- L'opérateur typeid
- Transtypage dynamique : opérateur dynamic_cast
- Les autres opérateurs de transtypage
- Travaux pratiques : mise en oeuvre d'un prototype de moteur de sérialisation
- Présentation de l'architecture STL : les conteneurs, les itérateurs et les algorithmes
- Travaux pratiques : utilisation de quelques conteneurs proposés par la STL
- Les différents types d'itérateurs
- Les différentes techniques de parcours de collections : itérateurs, for_each, instruction for each, ...
- Concept de « functions objects »
- Travaux pratiques : utilisation de « functions objects »
- Les différents types de collections de la STL
- Les conteneurs ajoutés par C++11
- Etude de divers algorithmes proposés par la librairie standard
- Travaux pratiques : utilisation des conteneurs standards et des algorithmes associés
- Le concept de lambda
- Les différents types de captures proposés
- Travaux pratiques : application des lambda à la manipulation de conteneurs STL
- Le bind C++
- Travaux pratiques : utilisation du module std::bind
- La librairie <filesystem> introduite par C++ ISO 2017
- Utilisation de path
- Fonctions de convenances
- Travaux pratiques : mise en oeuvre d'un programme permettant de lister le Contenu d'un disque
- Couplage avec la librairies de manipulation de flux (istream et ostream)
- Pourquoi programmer en multi-tâches ?
- Qu'est ce que thread et qu'est-ce qui le différencie d'un processus ?
- La librairie <thread>
- Connaître les spécificités multi-tâches du système d'exploitation utilisé
- Les mécanismes de synchronisation des accès concurrents
- RAII et la gestion des verrous
- Problèmes de performances en cas de mauvaise stratégie de synchronisation
- Opérations atomiques
- Utilisation de local storage
- Travaux pratiques : développement d'un programme multitâches et synchronisation des accès concurrents
Compléments sur le concept de généricité en C++