例:编写一个对具有n个元素的数组a[求最小值的程序,要求 将求最小值的函数设计成函数模板。 #include < iostream. h> void main( template class T inta[]={1,3,0,2,7,6,4,5,2} T min(t al, int n) double b[]={1.2,-3.4,6.8,9.8} cout<”a数组的最小值为:” int i <min(a, 9 < endl T minv=alo cout<”b数组的最小值为:” for(i=1; i<n; i++) <<min(b, 4)<<end if(minv>alil minv=alil return minv 此程序的运行结果为: a数组的最小值为:0 b数组的最小值为:-3.4
例:编写一个对具有n个元素的数组a[ ]求最小值的程序,要求 将求最小值的函数设计成函数模板。 #include <iostream.h> template <class T> T min(T a[],int n) { int i; T minv=a[0]; for(i=1;i<n;i++) if(minv>a[i]) minv=a[i]; return minv; } void main() { int a[]={1,3,0,2,7,6,4,5,2}; double b[]={1.2,-3.4,6.8,9.8}; cout<<”a数组的最小值为:” <<min(a,9)<< endl; cout<<”b数组的最小值为:” <<min(b,4)<<endl; } 此程序的运行结果为: a数组的最小值为:0 b数组的最小值为:-3.4
注场函数定义也是函数定义的一种,必须符合C十函数的 次定义规则。例: template<class T> void swap(T& a, T& b)i Tt=aa=bb=ti int fn([ int ix=6, iy=7, ia=3, ib=5i swap(ix,iy);/产生函数定义体 swap(ia,ib);//不产生函数定义体 swap(ia,ib)的函数调用时,由于系统中已经存在int型的 swap模板函数的定义,所以就不再生成swap<int>的模板 函数的定义了
template<class T> void swap(T& a, T& b){ T t=a; a=b; b=t; } int fn(){ int ix=6, iy=7, ia=3, ib=5; swap(ix, iy); //产生函数定义体 swap(ia, ib); //不产生函数定义体 //... } 模板函数定义也是函数定义的一种,必须符合C++函数的 一次定义规则。例: swap(ia,ib)的函数调用时,由于系统中已经存在int型的 swap模板函数的定义,所以就不再生成swap<int>的模板 函数的定义了。 注