行列のテンプレートクラス
早寝早起きにしないと。ここ最近は昼前に起きる生活なので大変まずい。
どうも上手く書けないが、手探りで書いた。
手探りで試行錯誤している段階が、プログラムで一番楽しい。
C++ テンプレート完全ガイド (Programmer’s SELECTION)
- 作者: David Vandevoorde,Nicolai M. Josuttis,津田義史
- 出版社/メーカー: 翔泳社
- 発売日: 2010/02/11
- メディア: 大型本
- 購入: 11人 クリック: 273回
- この商品を含むブログ (17件) を見る
- 作者: επιστημη,高橋晶
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2014/04/17
- メディア: 単行本
- この商品を含むブログ (3件) を見る
下記はMatrix.hです。
// Matrix.h #ifndef __MATRIX_H__ #define __MATRIX_H__ #include <iostream> // 行列テンプレート template<int M, int N, typename T> class TMatrix { private: T elements[M][N]; public: TMatrix( T (*array)[N] ) { for( int i = 0; i < M; ++i ) for( int j = 0; j < N; ++j ) elements[i][j] = array[i][j]; } ~TMatrix() { } T GetMatrix( int index_1, int index_2 ); void Disp(); }; template<int M, int N, typename T> T TMatrix<M, N, T>::GetMatrix( int index_1, int index_2 ) { return elements[index_1][index_2]; } template<int M, int N, typename T> void TMatrix<M, N, T>::Disp() { for( int i = 0; i < M; ++i ) { for( int j = 0; j < N; ++j ) std::cout << elements[i][j] << " "; std::cout << std::endl; } } #endif // __MATRIX_H__
そして、main.cppで表示させる。
// main.cpp #include "Matrix.h" int main() { int array[2][2] = { { 1, 0 }, { 0, 1 } }; TMatrix<2, 2, int> a( array ); a.Disp(); std::cout << std::endl; for( int i = 0; i < 2; ++i ) { for( int j = 0; j < 2; ++j ) std::cout << a.GetMatrix( i, j ) << " "; std::cout << std::endl; } return 0; }