This is an old revision of the document!
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, 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"; }