User Tools

Site Tools


in202:seance_3:td_3:part_ii

Differences

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

Link to this comparison view

Next revision
Previous revision
in202:seance_3:td_3:part_ii [2021/04/06 13:54]
bmonsuez created
in202:seance_3:td_3:part_ii [2022/11/18 10:46] (current)
Line 1: Line 1:
 ====== TD3 - Partie 2 - Les classes génériques ====== ====== TD3 - Partie 2 - Les classes génériques ======
 +
 +[[..:​td_3|Sujet complet]]
  
 ===== Question n°1 ===== ===== Question n°1 =====
  
  
-Nous considérons désormais une classe ''​KeyValuePair''​ qui stocke ​un pair de deux éléments, l'un correspondant à une clé et l'​autre correspondant à la valeur ​associé ​à cette clé :+Nous considérons désormais une classe ''​key_value_pair''​ qui stocke ​une paire de deux éléments, l'un correspondant à une clé et l'​autre correspondant à la valeur ​associée ​à cette clé :
  
 <code cpp> <code cpp>
Line 17: Line 19:
  
 public: public:
-    key_value_pair(int theKey, ​int theValue): ​+    key_value_pair(int theKey, ​std::​string ​theValue): ​
         m_key(theKey),​ m_value(theValue) {}         m_key(theKey),​ m_value(theValue) {}
  
     int getKey() const { return m_key; }     int getKey() const { return m_key; }
-    ​int getValue() const { return m_value; }+    ​std::​string ​getValue() const { return m_value; }
     ​     ​
-    ​int setKey(int theKey) { m_key = theKey; } +    ​void setKey(int theKey) { m_key = theKey; } 
-    ​int setValue(std::​string theValue) { m_value = theValue; }   +    ​void setValue(std::​string theValue) { m_value = theValue; }   
 }; };
 +
 +</​code>​
  
 Cette classe n'est définie que pour des clés ayant pour type ''​int''​ et des valeurs pour type [[https://​en.cppreference.com/​w/​cpp/​string/​basic_string|''​std::​string''​]]. Est-il possible d'​étendre le type de cette classe pour pouvoir être utilisé pour des clés ayant un type arbitraire ''​keyT''​ et des valeurs ayant  Cette classe n'est définie que pour des clés ayant pour type ''​int''​ et des valeurs pour type [[https://​en.cppreference.com/​w/​cpp/​string/​basic_string|''​std::​string''​]]. Est-il possible d'​étendre le type de cette classe pour pouvoir être utilisé pour des clés ayant un type arbitraire ''​keyT''​ et des valeurs ayant 
Line 38: Line 42:
 <code cpp> <code cpp>
 template<​class T>  template<​class T> 
-key_value_pair<​int,​ T> find_max(std::​vector<​T>​ theVector, T theValue)+key_value_pair<​int,​ T> find_max(std::​vector<​T>​ theVector)
 { {
 ... ...
Line 54: Line 58:
     key_value_pair<​int,​ int> max = find_max(vec); ​   ​     key_value_pair<​int,​ int> max = find_max(vec); ​   ​
     ​     ​
-    std::cout << "​Position:​ << max.getKey() << ", Value: " << max.getValue() << "​\n";​+    std::cout << "​Position: ​" ​<< max.getKey() << ", Value: " << max.getValue() << "​\n";​
 } }
  
 </​code>​ </​code>​
- + 
 +==== Code présenté pendant le cours ==== 
 + 
 +{{https://​perso.ensta-paris.fr/​~bmonsuez/​Media/​code/​in202/​2021/​td3/​part2/​part2.cpp|''​part2.cpp''​}} Fichier principal contient les fonctions de test et le main. 
 + 
 +{{https://​perso.ensta-paris.fr/​~bmonsuez/​Media/​code/​in202/​2021/​td3/​part2/​key_value_pair.h|''​key_value_pair.h''​}} Définition de la classe générique. 
 + 
 +===== Liens vers les éléments syntaxiques et ressources externes ===== 
 + 
 +[[https://​en.cppreference.com/​w/​cpp/​container/​vector|La classe ''​std::​vector<>''​]] 
 + 
 +[[cpp:​syntax:​class:​generic|Les classes génériques en C++]] 
 + 
 + 
 +===== Navigation ===== 
 + 
 + 
 +[[.:​part_i|Première partie]] 
 +[[.:​part_iii|Troisième partie]] 
  
in202/seance_3/td_3/part_ii.1617717291.txt.gz · Last modified: 2021/04/06 13:54 by bmonsuez