您好,登錄后才能下訂單哦!
#include <iostream> using namespace std; /*對稱矩陣及對稱矩陣的壓縮存儲*/ template<class T> class SymmetricMatrix { public: SymmetricMatrix(T* a, size_t N) :_a(new T[N*(N+1)/2]) ,_n(N) { size_t index = 0; for (size_t i = 0; i < N; ++i) { for (size_t j = 0; j < N; ++j) { if (i >= j) { _a[index++] = a[i*N+j]; } else { break; } } } } ~SymmetricMatrix() { if (_a) { delete[] _a; } } T& Access(size_t i, size_t j) { if (i < j) { swap(i, j); } return _a[i*(i+1)/2+j]; } void Display() { for (size_t i = 0; i < _n; ++i) { for (size_t j = 0; j < _n; ++j) { if (i >= j) { cout<<_a[i*(i+1)/2+j]<<" "; } else { cout<<_a[j*(j+1)/2+i]<<" "; } } cout<<endl; } } protected: T* _a;//對稱矩陣的壓縮存儲的一維數組 size_t _n;//對稱矩陣的行列數 }; void Test() { int array[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*)array, 5); sm.Display(); } int main() { Test(); return 0; }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。