预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共24页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

C++程序设计主要内容关于模板cout<<“新建初始,顺序表a中元素为:\n”;a. intn;//积分区间的分隔数 cout<<“矩阵b:\n”; {intk=find(x);//找出要删除元素的下标位置 因为它没有像函数实参表这样 3324659911574012 voidArray<T,size>::print()//输出函数 doublec[2][5]; 字符H已找到,下标=7 cout<<“第一个定积分:”;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×bkj k=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,