Cours C ++ au centre CS, deuxième partie

Computer Science Center est une initiative conjointe du Computer Science Club de POMI RAS, JetBrains et de la Yandex Data Analysis School .

Le centre existe pour permettre aux étudiants et diplômés talentueux de se développer dans des domaines qui les intéressent: informatique, science des données ou génie logiciel.

Le cours C ++ en deux parties au centre est dispensé par Valery Mikhailovich Lesin, valery-l , professeur au centre CS et magistrature conjointe de l'ITMO et JetBrains "Software Development / Software Engineering", directeur technique de Simlabs .

La deuxième partie aidera à maîtriser la plupart des capacités du C ++ moderne. Très probablement, vous ne deviendrez pas un gourou à la fin du deuxième semestre, mais la compétence devrait être suffisante pour utiliser efficacement C ++ dans la plupart des projets, si les avantages y sont applicables.

Nous explorerons les nouvelles fonctionnalités du langage et de la bibliothèque standard: déplacer la sémantique, bind / function, enable_if / if constexpr, coroutines et autres. Examinons quelques tâches typiques: programmation multithread, utilisation de bibliothèques sous Windows et Linux et autres.

Ayez une belle vue!

1. Bibliothèque standard. Composition, conteneurs STL, types de conteneurs, conteneur vectoriel, itérateurs, fonctionnement du vecteur. Sdt :: list container, adapters, associative containers, map iteration, search and insert into map. Indexation, suppression de la carte (ensemble). Autres conteneurs associatifs.


2. Déplacer la sémantique et la transmission parfaite. Programmes rapides. Optimisation de la valeur de retour. Lvalue vs Rvalue. Comment distinguer un objet temporaire d'un objet non temporaire. Conversion de & <-> const & <-> &&. Déplacer le constructeur contre les autres constructeurs. Renvoie la valeur vs && de la fonction. Retourne les gros objets par valeur, transfère par valeur. Problème d'argument de transfert. Nouvelles règles pour les liens en C ++ 11. Transfert parfait.


3. Algorithmes et foncteurs. Algorithmes standard, description des algorithmes. Opérations non modificatrices et modificatrices. Trier et rechercher. Conteneurs vs itérateurs. Foncteurs standard. Boost gamme. Concept de gamme.


4. lier et fonction. Tâche: appeler un rappel. Un peu de magie - std :: bind. Comment éviter la copie. ref / cref. Utilisation de bind avec des foncteurs. Méthodes d'appel. Liaison de nidification. std :: function. Effet synergique de la liaison et de la fonction. Performance. Fonctionnement des espaces réservés.


5. Exceptions. Façons de gérer les erreurs. essayez ... attraper. Types d'exceptions Utilisation de RAII. Passer des paramètres. Pile de classe. Garanties de sécurité pour les exceptions. Garanti sans exception. Copiez la pile. Réduction des exigences de pile. Spécification des exceptions. Opérateur noexcept et spécification noexcept (C ++ 11). Conteneurs STL. Pile de garanties et d'exigences.


6. À SFINAE ou non à SFINAE. Sélection du code en fonction du type. Sélection du type par condition. Test de réductibilité. Vérifiez la classe de base. SFINAE. Vérifiez le conteneur. Sélection par type de propriété.


7. Innovations C ++. Fonctions anonymes, auto, decltype, modèles variadic, pack de paramètres, extension de pack et expression de pli. Initialiseurs de membres de données non statiques, si constexpr.


8. Lignes. Entrée / sortie. Encodage (jeu de caractères). Chaîne std :: basic_string. Opérations de base sur les chaînes. booster les algorithmes de chaîne. Format de fichier texte vs binaire. Flux d'E / S, sortie, entrée, état du flux, entrée / sortie formatée. Manipulateurs, flux de fichiers.


9. Le préprocesseur. Utilisation et applicabilité des macros. Définition des constantes, compilation conditionnelle. Inclure la garde. Fonction macro. Transformer un jeton en chaîne, concaténer des jetons. Macro multiligne, définitions prédéfinies. affirmer. Macro variable, surcharge de macro. Idiome Pimpl.


10. Bibliothèques. Bibliothèques statiques et dynamiques. Statique vs Dynamique. Téléchargement de bibliothèques sans lien préalable. Fonctions exportées. Technologie COM.


11. Multithreading. Processus et fils. Types de multitâche. Situations problématiques. Créez un flux. L'objet stream est std :: thread. Fonctions auxiliaires. Exclusion mutuelle. Gestion des verrous. Capture exceptionnelle. Retournement d'exception. Variables de condition.


12. Multithreading. Partie 2. Calculs différés. Avenir et promesse. Async et Future. File d'attente d'événements / messages. Contrats, concepts.


Première partie du cours

Source: https://habr.com/ru/post/fr473484/


All Articles