#include<iostream>
using namespace std;
template<class T>
class SymmetricMatrix
{
public:
SymmetricMatrix(int* a, size_t N):_row(N),_col(N)
{
size_t index=0;
_pData =new T[N*(N+1)>>1];
for(int i=0;i<N;i++)
{
for(int j=0;j<=i;j++)
{
_pData[index++]=a[i*N+j];
}
}
}
T& Acess(int row, int col)
{
//上三角
if(row<col)
std::swap(col,row);
return _pData[row*(row+1)/2+col];
}
const T& Acess(int row, int col)const
{
//上三角
if(row<col)
std::swap(col,row);
return _pData[row*(row+1)/2+col];
}
~SymmetricMatrix()
{
if(_pData)
{
delete[] _pData;
_pData=NULL;
}
}
// ostream& operator<<(ostream& _cout,const Complex& c)//<<
//{
//
// if(c._image>-0.000001&&c._image<0.000001)
// _cout<<c._real;
// else
// _cout<<c._real&
对称矩阵的基本操作及其压缩存储
最新推荐文章于 2021-07-10 18:56:31 发布