SPKT

Dependents:   Player

Committer:
phungductung
Date:
Fri Jun 07 05:06:42 2019 +0000
Revision:
0:4e245f4bc8ac
spkt

Who changed what in which revision?

UserRevisionLine numberNew 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