对称矩阵:元素以主对角线为对称轴对应相等的矩阵

对称矩阵存储采用上三角、下三角存储,下三角符合i>=j(行大于等于列),我采用的是下三角存储,存储可以存储下三角的元素,但是打印时还需要将其转成对称矩阵形式打印

构造函数:

SymmetricMatrix(T*a,size_tsize):_a(newT[size*(size+1)/2]),_size(size*(size+1)/2),_n(size){intindex=0;for(size_ti=0;i<size;i++){for(size_tj=0;j<size;j++){if(i>=j){_a[index++]=a[i*size+j];}elsebreak;}}}

打印矩阵

voidDisplay(){for(size_ti=0;i<_n;i++){for(size_tj=0;j<_n;j++){if(i>=j){cout<<_a[i*(i+1)/2+j]<<"";}else{cout<<_a[j*(j+1)/2+i]<<"";}}cout<<endl;}cout<<endl;}

元素的访问

T&Access(size_ti,size_tj){if(i<j){swap(i,j);}return_a[i*(i+1)/2+j];}