码迷,mamicode.com
首页 > 编程语言 > 详细

c++:对称矩阵的压缩存储

时间:2015-11-04 14:54:53      阅读:344      评论:0      收藏:0      [点我收藏+]

标签:c++   对称矩阵   压缩存储   

SymmetricMatrix.hpp

#pragma once
#include<iostream>
using namespace std;
template<class T>
class SymmetricMatrix{
public:
 SymmetricMatrix(int arry[][3],size_t n){
  _arrySize = n*(n + 1) / 2;
  _arry = new int(_arrySize);
  size_t index = 0;
  for (int i = 0; i < n; ++i){
   for (int j = 0; j < n; ++j){
    if (i >= j){
     _arry[index++] = arry[i][j];
    }
   }
  }
 }
 T& Access(int row, int col){
  if (row < col){
   swap(row, col);
  }
  return _arry[row*(row+1)/2+col];
 }
private:
 T* _arry;
 size_t _arrySize;
 size_t _matrixLen;
};
void test(){
 int arr[3][3] = { { 0, 1, 2 },{ 1, 0, 2 },{ 2, 1, 0 } };
 SymmetricMatrix<int> sm(arr,3);
 cout << sm.Access(1, 0) << endl;
}

main.cpp

#include<iostream>
#include"SymmetricMatrix.hpp"
using namespace std;
int main(){
 test();
 return 0;
}


本文出自 “moLova” 博客,请务必保留此出处http://molova.blog.51cto.com/10594266/1709583

c++:对称矩阵的压缩存储

标签:c++   对称矩阵   压缩存储   

原文地址:http://molova.blog.51cto.com/10594266/1709583

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!