一、问题描述:
利用模板编写一个寻找俩个数之间的最大值。
二、解题思路:
首先,利用模板template<class T>编写模板寻找最大值函数,最后在主函数中运行调试,验证模板的函数的可行性。
三、代码实现:
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 template <class T> 5 T GetMax(T a,T b) 6 { 7 T result; 8 result=(a>b)?a:b; 9 return result; 10 } 11 int main() 12 { 13 int i=5,j=6,k; 14 long l=10,m=5,n; 15 k=GetMax<int>(i,j); 16 n=GetMax<long>(l,m); 17 cout<<k<<endl; 18 cout<<n<<endl; 19 return 0; 20 }
一、问题描述:
编写一个模板实现一个数组的每个元素之间的加和,再编写一个模板实现俩个数组之间的加和,再编写一个函数实现字符串之间的相连,最后,在主函数中验证三个数组的加和。
二、解题思路:
首先,定义一个含一个类型参数的模板实现一个数组每个元素的相加和,再编写俩个类型参数的模板实现俩个数组之间的相加和,再编写一个函数利用strcpy()和strcat()俩个函数实现俩个字符串之间的相连,最后在主函数中定义俩个数组和俩个字符串去验证代码的运行调试。
三、代码实现:
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 template<class T> 5 T sum(T *array,int size=0) 6 { 7 T total=0; 8 for(int i=0;i<size;i++) 9 { 10 total+=array[i]; 11 } 12 return total; 13 } 14 template<class T1,class T2> 15 T2 sum(T1 *array1,T2 *array2,int size=0) 16 { 17 T2 total=0; 18 for(int i=0;i<size;i++) 19 total+=array1[i]+array2[i]; 20 return total; 21 } 22 char *sum(char *s1,char*s2) 23 { 24 char *str=new char[strlen(s1)+strlen(s2)]; 25 strcpy(str,s1); 26 return strcat(str,s2); 27 } 28 int main() 29 { 30 int iArr[]={1,2,3,4,5}; 31 double dArr[]={1.1,2.2,3.3,4.4,5.5}; 32 char *p1="Hello"; 33 char *p2="World"; 34 int iTotal=sum(iArr,5); 35 double dTotal=sum(dArr,5); 36 double idTotal=sum(iArr,dArr,5); 37 p1=sum(p1,p2); 38 cout<<iTotal<<endl; 39 cout<<dTotal<<endl; 40 cout<<idTotal<<endl; 41 cout<<p1<<endl; 42 return 0; 43 }
一、问题描述:
编写一个类模板去实现去比较俩个数之间的大小。
二、解题思路:
首先,利用模板定义一个类,在类中定义俩个数据成员,再在类中定义一个比较俩个数据成员之间大小的函数,最后在主函数中定义一个类的对象去验证代码运行调试。
三、代码实现:
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 template<class T> 5 class mypair 6 { 7 T a,b; 8 public: 9 mypair(T first,T second) 10 { 11 a=first; 12 b=second; 13 } 14 T getmax(); 15 }; 16 template <class T> 17 T mypair<T>::getmax() 18 { 19 T retval; 20 retval=a>b?a:b; 21 return retval; 22 } 23 int main() 24 { 25 mypair<int> myobject(100,75); 26 cout<<myobject.getmax(); 27 return 0; 28 }
一、问题描述:
编写一个类模板,利用类模板去定义一个数组,能够对数组进行输入和输出数组的元素。
二、解题思路:
首先,定义一个类模板,在类内定义一个数组,在定义俩个函数实现数组元素的输入输出,最后在主函数中定义一个类的对象去进行代码运行调试。
三、代码实现:
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 template<class T,int N> 5 class mysequence 6 { 7 T memblock[N]; 8 public: 9 void setmember(int x,T value); 10 T getmember(int x); 11 }; 12 template<class T,int N> 13 void mysequence<T,N>::setmember(int x,T value) 14 { 15 memblock[x]=value; 16 } 17 template<class T,int N> 18 T mysequence<T,N>::getmember(int x) 19 { 20 return memblock[x]; 21 } 22 int main() 23 { 24 mysequence<int,5>myints; 25 mysequence<double,5>myfloats; 26 myints.setmember(0,100); 27 myfloats.setmember(3,3.1416); 28 cout<<myints.getmember(0)<<'\n'; 29 cout<<myfloats.getmember(3)<<'\n'; 30 return 0; 31 }