ulvis.paste.net

Paste Search Dynamic
Recent pastes
SqrMatrix
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template <typename t, size_t N>
  5. struct SqrMatrix {
  6.         SqrMatrix<t,N/2> a;            
  7.         SqrMatrix<t,N/2> b;
  8.         SqrMatrix<t,N/2> c;    
  9.         SqrMatrix<t,N/2> d;
  10.         SqrMatrix(t *m):
  11.                 a(m), b(m+N/2), c(m + N), d(m + N + N/2)
  12.         {}
  13.         SqrMatrix()
  14.         {}
  15.         ostream& print(ostream& o){
  16.                 a.print(o<<"[ ")<<"] ";
  17.                 b.print(o<<"[ ")<<"] ";
  18.                 c.print(o<<"[ ")<<"] ";
  19.                 d.print(o<<"[ ")<<"] ";
  20.                 return o;
  21.         }
  22. };
  23.  
  24. template <typename t>
  25. struct SqrMatrix<t,1> {
  26.         t elem;
  27.         SqrMatrix(t* m):elem(*m){}
  28.         SqrMatrix():elem(0){}
  29.         ostream& print(ostream& o){
  30.                 return o<<elem<<" ";
  31.         }
  32. };
  33.  
  34. // operator +
  35. template <typename t, size_t N>
  36. SqrMatrix<t, N> operator + (const SqrMatrix<t,N> &m1, const SqrMatrix<t,N> &m2){
  37.         SqrMatrix<t,N> res;
  38.         res.a=m1.a+m2.a; res.b=m1.b+m2.b;
  39.         res.c=m1.c+m2.c; res.d=m1.d+m2.d;
  40.         return res;
  41. }
  42.  
  43. //operator +
  44. template <typename t>
  45. SqrMatrix<t,1> operator + (const SqrMatrix<t,1> &m1, const SqrMatrix<t,1> &m2){
  46.         SqrMatrix<t,1> res;
  47.         res.elem = m1.elem + m2.elem;
  48.         return res;
  49. }
  50.  
  51. int main(){
  52.         const int N=4;
  53.         int m[N][N]={{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,13,14,15}};
  54.         SqrMatrix<int,N> a((int*)m);
  55.         SqrMatrix<int,N> b=a+a;
  56.         b.print(cout);
  57.         return 0;
  58. }
  59.  
Parsed in 0.013 seconds