C++实现对称矩阵以及压缩存储
来源:互联网 发布:信捷p乚c编程软件下载 编辑:程序博客网 时间:2024/06/06 03:05
#include<iostream>using namespace std;///////////////////////////实现对称矩阵以及压缩存储/////////////////////////////////////template<typename T>class SymmetricMatrix{friendostream& operator<<(ostream& _cout, SymmetricMatrix<int>& s);//声明一个友元重载输出符号public:SymmetricMatrix(int* a, size_t N)//用一个一维数组来存储对称矩阵:_N(N){int idex = 0;_pData = new T[N*(N+1)/2];//开辟一个下三角形或上三角形元素个数的空间for(int i = 0; i < N; i++){for(int j = 0; j <= i; j++){_pData[idex++] = a[i*N + j];//偏移过去一行的元素,用一维数组存储}}}T& Acess(int row, int col)//访问下三角形中的元素{if(col > row)//下三角形元素下标row>colstd::swap(row, col);//不是下三角就横纵坐标互换return _pData[row*(row+1)/2+col];}const T& Acess(int row, int col)const{if(col > row)std::swap(row, col);return _pData[row*(row+1)/2+col];//返回下三角元素}~SymmetricMatrix(){if(_pData){delete[] _pData; _pData = NULL; _N = 0;}}private:T* _pData;size_t _N;};ostream& operator<<(ostream& _cout, SymmetricMatrix<int>& s)//输出运算符重载{for(int i = 0; i < s._N; i++){for(int j = 0; j < s._N; j++)_cout<<s.Acess(i,j)<<" ";_cout<<endl;}return _cout;}int main(){int a[5][5] = {{0,1,2,3,4},{1,0,1,2,3},{2,1,0,1,2},{3,2,1,0,1},{4,3,2,1,0}};SymmetricMatrix<int> sm((int*)a,5);cout<<sm.Acess(3,0)<<endl;cout<<sm;system("pause");return 0;}
程序运行结果
0 0
- 【C++】实现对称矩阵以及压缩存储
- 实现对称矩阵以及压缩存储
- C++实现对称矩阵以及压缩存储
- c++实现对称矩阵的压缩存储
- 对称矩阵压缩存储
- 对称矩阵压缩存储
- 对称矩阵 压缩存储
- 对称矩阵压缩存储
- 对称矩阵和稀疏矩阵以及它们的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- ~对称矩阵的压缩存储~
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- Android性能优化--内存泄露
- 工作区Run
- malloc()函数详解
- List集合特有迭代器ListIterator
- ZJCPC2004 Tempter of the Bone
- C++实现对称矩阵以及压缩存储
- Android音视频点/直播模块开发实践总结
- 在服务器端取得客户端传递过来的JSON字符串,转成JSON对象并取值
- MySQL中字段varchar和int排序的区别
- ppp拨号脚本配置
- 调整tomcat 虚拟机内存大小
- 国学节选
- Android Studio若干实用的插件
- Win7系统64位环境下使用Apache——下载mod_jk