【C++】实现对称矩阵以及压缩存储
来源:互联网 发布:阿里备案域名交易 编辑:程序博客网 时间:2024/06/05 19:48
对称矩阵以及压缩存储
对称矩阵就是形容如下矩阵的,本文主要对对称矩阵和对称矩阵的压缩矩阵进行一个简单的实现。
{ 0, 1, 2, 3, 4, 5},
{ 1, 0, 1, 2, 3 ,4},
{ 2, 1, 0, 1, 2 ,3},
{ 3, 2, 1, 0, 1 ,2},
{ 4, 3, 2, 1, 0 ,1},
{ 5, 4, 3, 2, 1 ,0},
template<class T>class SymmetricMatrix{public: SymmetricMatrix(T* pData, size_t N) :_pData(new T[N*(N + 1) / 2]) ,_row(N) ,_col(N) { size_t index = 0; for (size_t i = 0; i < N; ++i) { for (size_t j = 0; j < N; ++j) { if (i >= j) { _pData[index++] = pData[i*N + j]; } else { break; } } } } T& Acess(int row, int col) { { if (row < col) { swap(row, col); } return _pData[row*(row + 1) / 2 + col]; } } const T& Acess(int row, int col)const { if (row < col) { swap(row, col); } return _pData[row*(row + 1) / 2 + col]; } ~SymmetricMatrix() { if (_pData) { delete[] _pData; } } void Display() { for (size_t i = 0; i < _row; ++i) { for (size_t j = 0; j < _row; ++j) { if (i >= j) { cout << _pData[i*(i + 1) / 2 + j] << " "; } else { cout << _pData[j*(j + 1) / 2 + i] << " "; } } cout << endl; } }private: T* _pData; size_t _row; size_t _col;};
测试代码:
void Test(){ int array[6][6] = { { 0, 1, 2, 3, 4, 5}, { 1, 0, 1, 2, 3 ,4}, { 2, 1, 0, 1, 2 ,3}, { 3, 2, 1, 0, 1 ,2}, { 4, 3, 2, 1, 0 ,1}, { 5, 4, 3, 2, 1 ,0}, }; SymmetricMatrix<int> sm((int*)array, 6); sm.Display();}int main(){ Test(); return 0;}
0 0
- 【C++】实现对称矩阵以及压缩存储
- 实现对称矩阵以及压缩存储
- C++实现对称矩阵以及压缩存储
- c++实现对称矩阵的压缩存储
- 对称矩阵压缩存储
- 对称矩阵压缩存储
- 对称矩阵 压缩存储
- 对称矩阵压缩存储
- 对称矩阵和稀疏矩阵以及它们的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- ~对称矩阵的压缩存储~
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- leetcode 7.Reverse Integer
- windows下Python机器学习依赖库安装——numpy、scipy、sklearn、xgboost、theano等
- C++ 省略 std:: 前缀
- Redis持久化
- 代表月亮消灭你
- 【C++】实现对称矩阵以及压缩存储
- 求n次方的高效算法
- HDU
- Java程序的执行顺序以及赋值顺序
- 堆排序算法实现
- Stay hungry, Stay foolish
- java多线程(三) 之 对象的共享
- MySQL语句操作(日结二)
- DataGridView 保存编辑的行