Le 14 septembre 2017, nous avons publié une version actualisée de notre Politique de confidentialité. En utilisant video2brain.com vous vous engagez à respecter ces documents mis à jour. Veuillez donc prendre quelques minutes pour les consulter.

C++ : La sémantique de déplacement

Utiliser std::move

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Voyez comment les collections et les fonctions standards utilisent le déplacement dés que possible. Utilisez la sémantique de déplacement plutôt que la copie à des fins de performance.

Transcription

La librairie standard C++ propose une fonction "move" qui utilise la sémantique de déplacement. Nous allons voir au travers d'un exemple comment elle procède. Cet exemple est très simple, c'est un programme qui contient deux vecteurs donc deux tableaux. L'un qui contient les jours de la semaine, le second qui contient les saisons. Les deux tableaux sont affichés v1 et v2 grâce à une fonction "afficher" qui prend le tableau reçu en paramètre, parcourt avec un itérateur le contenu, et affiche chaque élément. Si l'on exécute, on voit s'afficher donc v1, les jours de la semaine et v2, les saisons. Alors on va utiliser "move" pour déplacer un tableau dans un autre. Par exemple ici v1 dans v2. Donc pour ça on va utiliser donc la fonction "move" standard. Elle va permettre de convertir v1 en une rvalue, et v2 qui a été prévu pour recevoir une rvalue va effectuer un déplacement lorsqu'on va l'affecter. Ici alors pour constater le résultat de cette affectation on va bien sûr copier, coller l'affichage et donc lorsque l'on exécute on a donc au début v1 donc qui contient les jours de la semaine, v2 les saisons comme on l'a vu tout à l'heure. v1 maintenant ne contient plus rien puisque son contenu a été déplacé dans v2 qui contient maintenant les jours de la semaine. Cette opération se distingue vraiment d'une simple affectation, comme j'aurais pu le faire en faisant v2 = v1, où là bien sûr en exécutant on a plutôt un résultat du style voilà, on a bien sûr v1 qui a toujours son contenu. Donc le déplacement c'est vraiment non pas une copie mais vraiment un déplacement du contenu sans copie mémoire et destruction de l'ancien mais vraiment une migration des données d'un objet vers un autre. Alors pour justement profiter de cette migration, on peut aussi vouloir par exemple avoir une fonction qui permet de permuter le contenu de deux tableaux. Donc ici je vais transformer mon "move" en une permutation de v1 et de v2. Je prends les deux tableaux en paramètres. Ici, et puis bien sûr je vais écrire ma fonction "permuter" qui va prendre en référence mes deux vecteurs. Donc a et un autre vecteur b. Et bien sûr une permutation assez classique, puisque je vais avoir un vecteur temporaire qui va stocker temporairement le contenu d'une des deux variables. Donc par exemple a. Et au lieu de faire une copie, j'effectue un déplacement. a donc peut être remplacé par le contenu de b, et b remplacé par le contenu de tmp. Donc ici j'ai une opération qui va être très performante grâce au "move" puisque je vais faire migrer mes données de a vers tmp, de b vers a et de tmp vers b. Je peux maintenant lancer ce code. Pour constater que donc une fois que j'ai fait la permutation, j'ai bien les saisons qui sont dans v1 et les jours de la semaine qui sont dans v2. Cette fonction "permuter" que j'ai écrite en fait elle existe déjà. C'est la fonction "swap", elle est dans la bibliothèque standard, et je l'utilise comme ça tout simplement : swap donc j'ai exactement le même effet : les saisons dans v1, les jours dans v2 après la permutation par la fonction standard "swap". "swap" mais aussi et surtout "move" sont donc deux fonctions très pratiques que nous allons abondamment utiliser dans la suite de notre chapitre.

C++ : La sémantique de déplacement

Développez des classes compatibles avec la sémantique de déplacement en C++. Obtenez un code robuste et performant grâce à une utilisation pertinente de la sémantique move.

31 min (10 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :24 oct. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !