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é :
#include<string> class key_value_pair { private: int m_key; std::string m_value; public: key_value_pair(int theKey, std::string theValue): m_key(theKey), m_value(theValue) {} int getKey() const { return m_key; } std::string getValue() const { return m_value; } void setKey(int theKey) { m_key = theKey; } void 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.
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) { ... }
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"; }
''part2.cpp'' Fichier principal contient les fonctions de test et le main.
''key_value_pair.h'' Définition de la classe générique.