程序:第04章:数组和字符串.docx
PAGE
程序设计经典教案
程序设计经典教案
数组和字符串
程序4.1一维数组类
#includeassert.h
templateclassT
classArray1D
{
public:
Array1D(intsz=0);缺省时长度为0
~Array1D(){delete[]elements;}
Toperator[](inti)const;取元素值
Array1DToperator=(constArray1DTr);整体赋值
friendistreamoperator(istreamin,Array1DTr);
friendostreamoperator(ostreamout,constArray1DTr);
private:
intsize;
T*elements;指向T类型数组的指针
};
templateclassT
Array1DT::Array1D(intsz)
{
assert(sz=0);越界检查
size=sz;
elements=newT[sz];
}
templateclassT
TArray1DT::operator[](inti)const
{
assert(i=0isize);越界检查
returnelements[i];
}
templateclassT
Array1DTArray1DT::operator=(constArray1DTr)数组r整体赋值给this
{
if(this!=r){防止自我赋值
size=r.size;
delete[]elements;释放原空间
elements=newT[size];重新分配空间
for(inti=0;isize;i++)
elements[i]=r.elements[i];复制元素
}
return*this;
}
templateclassT
istreamoperator(istreamin,Array1DTr)
{
coutIntputarray\n;
for(inti=0;ir.size;i++)inr.elements[i];
returnin;
}
templateclassT
ostreamoperator(ostreamout,constArray1DTr)
{
coutArray=;
for(inti=0;ir.size;i++)outr.elements[i];
outendl;
returnout;
}
程序4.2应用一维数组类的主程序
#includearray1d.h
voidmain()
{
Array1Dinta(5),b(8);
Array1Dintc;采用缺省长度0
cina;coutaa;
cinb;coutbb;
coutcc;
couta[0]=a[0];b[5]=b[5]endl;
c=b;coutc=b,cc;
b=a;coutb=a,bb;
}
程序4.3稀疏矩阵类
templateclassT
classSparseMatrix
{
public:
SparseMatrix(intmaxRowSize,intmaxColSize){};
~SparseMatrix(){};
virtualvoidAdd(constSparseMatrixTB,