This is an old revision of the document!
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 [[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 un type arbitraire ''valueT''. Procéder aux modifications de code. ===== Question n°2 ===== Ecrivez une fonction qui recherche dans un vecteur [[https://en.cppreference.com/w/cpp/container/vector|''std::vector'']] la valeur maximale ainsi que sa position et qui possède l'en-tête suivante: <code cpp> 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"; }