10.C++模板
C++模板
C++的模板是多态的一种表现。
C++的模板有模板函数与模板类,模板类是由多个模板函数组成的。
什么是模板,当实际传入类型的时候才能确定处理的类型。类似于Java中的泛型。
示例:(求最大值)
Array.h
#include <iostream>
using namespace std;
template <class VType>//定义模板的类型为VType
class Array{
private:
VType *a;//定义一个指针
int len;
public:
Array(VType *p,int ln){//构造函数
a = p;
len = ln;
}
//求最大值
VType max(){
VType ret = a[0];
for(int i = 1;i < len; i++){
if(a[i] > ret){
ret = a[i];
}
}
return ret;
}
//求最小值
VType min(){
VType ret = a[0];
for(int i = 1;i < len; i++){
if(a[i] < ret){
ret = a[i];
}
}
return ret;
}
//排序(选择排序)
void sort(){
VType ret;
int k;
for(int i = 0; i < len-1; i++){
k = i;
for(int j = i+1; j < len ;j++){
if(a[k] > a[j]){
k = j;
}
}
ret = a[i];
a[i] = a[k];
a[k] = ret;
}
}
};
main.h
#include "Array.h"
int main(){
int a[] = {10,20,50,11,30,88,60};
//string s[] = {"string","deap","tea","deep","sleep"};
char s[] = "hskadhksaffz";
//cout << sizeof(a)/sizeof(a[0]);
Array <int>arr(a,sizeof(a)/sizeof(a[0]));//使用时,需要传入指定的类型int
cout << "a最大值为:"<< arr.max() << endl;
cout << "a最小值为:"<< arr.min() << endl;
//Array <string>arr2(s,sizeof(s)/sizeof(s[0]));
Array <char>arr2(s,sizeof(s)/sizeof(s[0])-1);//使用时,需要传入指定的类型char
cout << "s最大值为:"<< arr2.max() << endl;
cout << "s最小值为:"<< arr2.min() << endl;
cout << "排序:" << endl;
arr.sort();
arr2.sort();
for(int i = 0;i< sizeof(a)/sizeof(a[0]); i++){
cout << a[i] << " ";
}
cout << endl;
for(int i = 0;i< sizeof(s)/sizeof(s[0])-1; i++){
cout << s[i] << " ";
}
return 0;
}

浙公网安备 33010602011771号