sp
Array_Matrix/Matrix.hpp@0:4e245f4bc8ac, 2019-06-07 (annotated)
- Committer:
- phungductung
- Date:
- Fri Jun 07 05:06:42 2019 +0000
- Revision:
- 0:4e245f4bc8ac
spkt
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
phungductung | 0:4e245f4bc8ac | 1 | //------------------------------------------------------------------------------ |
phungductung | 0:4e245f4bc8ac | 2 | // Generic 2-dimensional array class ---- Matrix |
phungductung | 0:4e245f4bc8ac | 3 | // |
phungductung | 0:4e245f4bc8ac | 4 | // 2016/05/22, Copyright (c) 2016 MIKAMI, Naoki |
phungductung | 0:4e245f4bc8ac | 5 | //------------------------------------------------------------------------------ |
phungductung | 0:4e245f4bc8ac | 6 | |
phungductung | 0:4e245f4bc8ac | 7 | #ifndef MIKAMI_MATRIX_HPP |
phungductung | 0:4e245f4bc8ac | 8 | #define MIKAMI_MATRIX_HPP |
phungductung | 0:4e245f4bc8ac | 9 | |
phungductung | 0:4e245f4bc8ac | 10 | #include "Array.hpp" |
phungductung | 0:4e245f4bc8ac | 11 | |
phungductung | 0:4e245f4bc8ac | 12 | namespace Mikami |
phungductung | 0:4e245f4bc8ac | 13 | { |
phungductung | 0:4e245f4bc8ac | 14 | template <class T> class Matrix |
phungductung | 0:4e245f4bc8ac | 15 | { |
phungductung | 0:4e245f4bc8ac | 16 | public: |
phungductung | 0:4e245f4bc8ac | 17 | explicit Matrix(int rows = 1, int cols = 1); |
phungductung | 0:4e245f4bc8ac | 18 | Matrix(int rows, int cols, T initialValue); |
phungductung | 0:4e245f4bc8ac | 19 | void Fill(T val); |
phungductung | 0:4e245f4bc8ac | 20 | void SetSize(int rows, int cols); // setting size |
phungductung | 0:4e245f4bc8ac | 21 | Array<T>& operator[](int i) { return vv_[i]; } // assign by element |
phungductung | 0:4e245f4bc8ac | 22 | const Array<T>& operator[](int i) const { return vv_[i]; } //get element |
phungductung | 0:4e245f4bc8ac | 23 | int Rows() const { return vv_.Length(); } |
phungductung | 0:4e245f4bc8ac | 24 | int Cols() const { return vv_[0].Length(); } |
phungductung | 0:4e245f4bc8ac | 25 | private: |
phungductung | 0:4e245f4bc8ac | 26 | Array< Array<T> > vv_; |
phungductung | 0:4e245f4bc8ac | 27 | }; |
phungductung | 0:4e245f4bc8ac | 28 | |
phungductung | 0:4e245f4bc8ac | 29 | //----------------------------------------------------------------------- |
phungductung | 0:4e245f4bc8ac | 30 | // implementation of generic 2-dimensional array class |
phungductung | 0:4e245f4bc8ac | 31 | //----------------------------------------------------------------------- |
phungductung | 0:4e245f4bc8ac | 32 | template <class T> Matrix<T>::Matrix(int rows, int cols): vv_(rows) |
phungductung | 0:4e245f4bc8ac | 33 | { |
phungductung | 0:4e245f4bc8ac | 34 | Array<T> a(cols); |
phungductung | 0:4e245f4bc8ac | 35 | for (int i=0; i<rows; i++) vv_[i] = a; |
phungductung | 0:4e245f4bc8ac | 36 | } |
phungductung | 0:4e245f4bc8ac | 37 | |
phungductung | 0:4e245f4bc8ac | 38 | template <class T> Matrix<T>::Matrix(int rows, int cols, T initialValue) |
phungductung | 0:4e245f4bc8ac | 39 | : vv_(rows) |
phungductung | 0:4e245f4bc8ac | 40 | { |
phungductung | 0:4e245f4bc8ac | 41 | Array<T> a(cols, initialValue); |
phungductung | 0:4e245f4bc8ac | 42 | for (int i=0; i<rows; i++) vv_[i] = a; |
phungductung | 0:4e245f4bc8ac | 43 | } |
phungductung | 0:4e245f4bc8ac | 44 | |
phungductung | 0:4e245f4bc8ac | 45 | template <class T> void Matrix<T>::Fill(T val) |
phungductung | 0:4e245f4bc8ac | 46 | { |
phungductung | 0:4e245f4bc8ac | 47 | for (int n=0; n<Rows(); n++) vv_[n].Fill(val); |
phungductung | 0:4e245f4bc8ac | 48 | } |
phungductung | 0:4e245f4bc8ac | 49 | |
phungductung | 0:4e245f4bc8ac | 50 | template <class T> void Matrix<T>::SetSize(int rows, int cols) |
phungductung | 0:4e245f4bc8ac | 51 | { |
phungductung | 0:4e245f4bc8ac | 52 | Array<T> a(cols); |
phungductung | 0:4e245f4bc8ac | 53 | vv_.SetSize(rows); |
phungductung | 0:4e245f4bc8ac | 54 | for (int i=0; i<rows; i++) vv_[i] = a; |
phungductung | 0:4e245f4bc8ac | 55 | } |
phungductung | 0:4e245f4bc8ac | 56 | } |
phungductung | 0:4e245f4bc8ac | 57 | #endif // MIKAMI_MATRIX_HPP |
phungductung | 0:4e245f4bc8ac | 58 |