My_tools.h
#include<iostream>
using namespace std;
template <class T>
T My_min(T t1, T t2);
template <typename T>
T My_max(T t1, T t2);
template <class T>
void Swap(T t1, T t2);
My_tools.cpp
#include "My_tools.h"
// 函数模板
// typename 和 class 关键字在这里作用是相同的,含义都是声明一个类型。因此可替换使用
template <class T>
inline T My_min(T t1, T t2) {
return t1<t2?t1:t2;
}
template <class T>
inline T My_max(T t1, T t2) {
return t1>t2?t1:t2;
}
template <typename T>
void Swap(T t1, T t2) {
T temp;
temp = t1;
t1 = t2;
t2 = temp;
}
// 单个参数类模板
template <class T>
class Single {
private:
T t;
public:
Single(T t) : t(t){};
void print() {
cout << t << endl;
}
};
// 两个参数类模板
template <class T1, class T2>
class Pair {
private:
T1 key;
T2 value;
public:
Pair(T1 t1, T2 t2) : key