长安的花

当学问走过漫漫古道
凿刻入千窟,心也从愚昧中苏醒

0%

Hack cpp STL template

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";
}
};
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

欢迎关注我的其它发布渠道