如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
C++程序设计主要内容关于模板cout<<“新建初始,顺序表a中元素为:\n”;a.intn;//积分区间的分隔数cout<<“矩阵b:\n”;{intk=find(x);//找出要删除元素的下标位置因为它没有像函数实参表这样3324659911574012voidArray<T,size>::print()//输出函数doublec[2][5];字符H已找到,下标=7cout<<“第一个定积分:”;j1.T&operator[](intk);//重载下标运算符“[]”TArray<T,size>::get(intk)//获取顺序表中第k个位置的元素调用式中显式给出模板实参①编译系统生成类模板的某个具体类版本的过程称为类模板实例化,每一个实例就是一个模板类。个标识符构成,该标识符用在紧跟其后的类【例】上例中的四次调用:cout<<“|a|=”<<abs<int>(a)<<endl;②在cin流中,输入Ctrl+Z表示流【例】(四个求绝对值的重载函数)#include<iostream.h>intabs(intx){return(x>0?x:-x);}longabs(longx){return(x>0?x:-x);}floatabs(floatx){return(x>0?x:-x);}doubleabs(doublex){return(x>0?x:-x);}voidmain(){inta=-96;longb=78;floatc=-3.6;doubled=5.8;cout<<“|a|=”<<abs(a)<<endl;cout<<“|b|=”<<abs(b)<<endl;cout<<“|c|=”<<abs(c)<<endl;cout<<“|d|=”<<abs(d)<<endl;}函数模板实例化模板形参表中给出的类型参数来代表某种潜if(k>=last){cout<<“下标未越界,但超出有效元素范围!\n”;exit(0);}if(b.㈡模板实参不能省略的情况:#include<math.【例】上例中的四次调用:cout<<“|a|=”<<abs<int>(a)<<endl;表一种潜在的数据类型。#include<math.格式:typedef类名<模板实参列表>模板类名;T&operator[](intk);//重载下标运算符“[]”②典型操作函数:intlength();//求顺序表中元素的个数228.for(i=0;i<m;i++)【例】(求数组元素中的最大值的函数模板、调用时隐式或显式给出模板实参)#include<iostream.h>template<typenameT>Tmax(T*p,intn){Tmax=p[0];for(inti=1;i<n;i++)if(max<p[i])max=p[i];returnmax;}voidmain(){inta[10]={3,56,7,-7,-45,32,1,64,99,72};doubleb[6]={32.4,99.8,-6.5,-78.4,65.4,2345};intta=max(a,10);//或max<int>(a,10);cout<<“整数数组中的最大值=”<<ta<<endl;doubletb=max(b,6);//或max<double>(b,6);cout<<“实数数组中的最大值=”<<tb<<endl;}【例】(两矩阵相乘函数模板、调用时显式给出模板实参)分析:a为m×n矩阵,b为n×p矩阵,a乘以b得到c矩阵,则c为m×p的矩阵。k=n-1矩阵相乘公式:cij=∑aik×bkjk=0#include<iostream.h>#include<iomanip.h>template<typenameT1,typenameT2,typenameT3>voidmulti(T1*pa,T2*pb,T3*pc,intm,intn,intp){inti,j,k;for(i=0;i<m;i++)for(j=0;j<p;j++){pc[i][j]=0;for(k=0;k<n;k++)pc[i][j]+=pa[i][k]*pb[k][j];}}template<typenameT>voidprint(T*p,intm,intn){inti,j;for(i=0;i<m;i++){for(j=0;j<n;j++)cout<<setw(6)<<p[i][j];cout<<endl;}}voidmain(){inta[2][3]={{1,2,3},{4,5,6}};floatb[3][5]={{1.2,2.1,3.2,4,5},{6,7,