User Tools

Site Tools


in202:seance_3:td_3:part_ii

This is an old revision of the document!


TD3 - Partie 2 - Les classes génériques

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é :

#include<string>
 
class key_value_pair
{
private:
    int m_key;
    std::string m_value;
 
public:
    key_value_pair(int theKey, int theValue): 
        m_key(theKey), m_value(theValue) {}
 
    int getKey() const { return m_key; }
    int getValue() const { return m_value; }
 
    int setKey(int theKey) { m_key = theKey; }
    int setValue(std::string theValue) { m_value = theValue; }   
};

Cette classe n'est définie que pour des clés ayant pour type int et des valeurs pour type ''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 un type arbitraire valueT.

Procéder aux modifications de code.

Question n°2

Ecrivez une fonction qui recherche dans un vecteur ''std::vector'' la valeur maximale ainsi que sa position et qui possède l'en-tête suivante:

template<class T> 
key_value_pair<int, T> find_max(std::vector<T> theVector, T theValue)
{
...
}

Tester cette fonction sur le vecteur suivant :

int main()
{
    std::vector<int> vec = { 1, 8, 3, 2, 4 };
    key_value_pair<int, int> max = find_max(vec);    
 
    std::cout << "Position: " << max.getKey() << ", Value: " << max.getValue() << "\n";
}

Liens vers les éléments syntaxiques et ressources externes

in202/seance_3/td_3/part_ii.1617792303.txt.gz · Last modified: 2021/04/07 10:45 by bmonsuez