User Tools

Site Tools


in204:tds:sujets:td6:part1

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
in204:tds:sujets:td6:part1 [2022/10/08 16:36]
bmonsuez
in204:tds:sujets:td6:part1 [2022/11/18 10:49] (current)
Line 6: Line 6:
 ===== Question n°1===== ===== Question n°1=====
  
-Créer un projet dans lequel vous définissez intégrer ​le fichier "​simple_sort.hpp"​ qui contient la fonction de comparaison suivante:+Créer un projet dans lequel vous intégrez ​le fichier "​simple_sort.hpp"​ qui contient la fonction de comparaison suivante:
  
 <code cpp> <code cpp>
Line 13: Line 13:
  
 template<​typename ​ iterator>​ template<​typename ​ iterator>​
-void simple_sort(iterator start, iterator end)  +void simple_sort(iterator start, iterator end)
-    requires(std::​forward_iterator<​iterator>​ && std::​input_or_output_iterator<​iterator>​)+
 { {
     for(;start != end; start ++)     for(;start != end; start ++)
Line 38: Line 37:
    
   * devant offrir une itération croissante,   * devant offrir une itération croissante,
-  * devant offrir la possibilité de reprendre l'​itération à partir d'une position antérieurement ​stocké.+  * devant offrir la possibilité de reprendre l'​itération à partir d'une position antérieurement ​stockée.
  
 Si nous regardons les caractéristiques des itérateurs:​ [[https://​en.cppreference.com/​w/​cpp/​iterator|Iterator library]], nous constatons que: Si nous regardons les caractéristiques des itérateurs:​ [[https://​en.cppreference.com/​w/​cpp/​iterator|Iterator library]], nous constatons que:
Line 53: Line 52:
 ==== Question n°1.2 ===== ==== Question n°1.2 =====
  
-Ajouter une contrainte imposant que le type passé à la fonction correspond bien au type d'​itérateur que vous avez identifié ​?+Ajouter une contrainte imposant que le type passé à la fonction correspond bien au type d'​itérateur que vous avez identifié.
  
 <hidden Correction>​ <hidden Correction>​
Line 79: Line 78:
 ==== Question n°1.3 ==== ==== Question n°1.3 ====
  
-Nous supposons ​ajouter l'​opérateur suivant qui liste l'​ensemble des éléments d'​un ​containeur:+Nous souhaitons ​ajouter l'​opérateur suivant qui liste l'​ensemble des éléments d'​un ​conteneur:
  
 <code cpp> <code cpp>
Line 116: Line 115:
 ==== Question n°1.4 ==== ==== Question n°1.4 ====
  
-Dans la question précédente,​ nous avons définit ​une nouvelle surcharge de l'​opérateur <<. En fait, cette surcharge n'est pas optimale, puisqu'​il suffit que je définisse un type quelconque non supporté et cela ne fonctionne plus :+Dans la question précédente,​ nous avons défini ​une nouvelle surcharge de l'​opérateur ​%%<<%%. En fait, cette surcharge n'est pas optimale, puisqu'​il suffit que je définisse un type quelconque non supporté et cela ne fonctionne plus :
  
 <code cpp> <code cpp>
Line 136: Line 135:
  
 <hidden Correction>​ <hidden Correction>​
-En fait, il n'y a pas de surcharge de l'​opérateur ​`<<pour le type `Toto`, en conséquence,​ le compilateur va rechercher dans les opérateurs qui n'ont pas de contraintes sur les types, vous vous souvenez qu'on essaye d'​abord les opérateurs les plus généraux et ensuite les moins généraux. Il trouve donc dans l'​espace de nom courant l'​opérateur :  ​+En fait, il n'y a pas de surcharge de l'​opérateur ​%%<<%% pour le type `Toto`, en conséquence,​ le compilateur va rechercher dans les opérateurs qui n'ont pas de contraintes sur les types, vous vous souvenez qu'on essaye d'​abord les opérateurs les plus généraux et ensuite les moins généraux. Il trouve donc dans l'​espace de nom courant l'​opérateur :  ​
  
 <code cpp> <code cpp>
Line 143: Line 142:
 </​code>​ </​code>​
  
-et ne sait pas que cet opérateur n'est définit que pour les objets qui sont des containers ​au sens de la STL. En conséquence de quoi, il génère une erreur puisqu'​il essaye d'​instancier un code qui ne supporte pas des objets de type `Toto`.+et ne sait pas que cet opérateur n'est définit que pour les objets qui sont des conteneurs ​au sens de la STL. En conséquence de quoi, il génère une erreur puisqu'​il essaye d'​instancier un code qui ne supporte pas des objets de type `Toto`.
  
 </​hidden>​ </​hidden>​
in204/tds/sujets/td6/part1.1665246980.txt.gz · Last modified: 2022/10/08 16:36 by bmonsuez