template
类模板提供了基于参数生成类的规范。 类模板通常用于实现容器。 类模板通过将一组给定的类型作为模板参数传递给它来实例化。
举例
1 2 3 4 5 6 7 8
| template <class T> class AddElements { public: T element; AddElements(T i) {element = i;} T add(T i) {return element+i;} T concatenate(T i) {return element+i;} private: };
|
使用方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| if(type=="float") { double element1,element2; cin >> element1 >> element2; AddElements<double> myfloat (element1);//调用模板 cout << myfloat.add(element2) << endl; } else if(type == "int") { int element1, element2; cin >> element1 >> element2; AddElements<int> myint (element1);//调用模板 cout << myint.add(element2) << endl; } else if(type == "string") { string element1, element2; cin >> element1 >> element2; AddElements<string> mystring (element1);//调用模板 cout << mystring.concatenate(element2) << endl; } }
|
struct的模板
枚举:
1 2
| enum class Fruit { apple, orange, pear }; enum class Color { red, green, orange };
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| template <typename T> struct Traits; template<> struct Traits<Fruit>{ static string name(int index){ switch(index){ case 0:return "apple"; case 1: return "orange" ; case 2: return "pear"; } return "unknown"; } };
template <> struct Traits<Color>{ static string name(int index){ switch(index){ case 0:return "red"; case 1: return "green" ; case 2: return "orange"; } return "unknown"; } };
|