C++
#ifndef PRO1_PAIRS_H#define PRO1_PAIRS_H#include <iostream>#include <string>using namespace std;template <class T1, class T2>class Pair {private: T1 a; T2 b;public: T1 & first(); T2 & second(); T1 first() const { return a; } T2 second() const { return b; } Pair(const T1 & aval, const T2 & bval) : a(aval), b(bval){} Pair(){}};template <class T1, class T2>T1& Pair<T1, T2>::first() { return a;}template <class T1, class T2>T2& Pair<T1, T2>::second() { return b;}#endif //PRO1_PAIRS_H
#include "pairs.h"
#include <iostream>#include "module11_class_template/multiple_type_parameters/pairs.h"using namespace std;// 多个类型参数void useMultipleTypeParameter(){ Pair<string, int> rating[4] = { Pair<string, int>("The Purple Duke", 5), Pair<string, int>("Jake's Frisco AI Fresco", 4), Pair<string, int>("Mont Souffle", 5), Pair<string, int>("Gertie's Eats", 3) }; int joints = sizeof(rating) / sizeof(Pair<string, int>); cout << "Rating :\t Eatery\n"; for (int i = 0; i < joints; i++) { cout << rating[i].second() << ":\t" << rating[i].first() << endl; cout << "Oops! Revised rating :\n"; rating[3].first() = "Gertie's Fab Eat"; rating[3].second() = 6; cout << rating[3].second() << ":\t" << rating[3].first() << endl; }}int main() { useMultipleTypeParameter(); return 0;}