<code>#include "Stdio.h"</code>
<code>#include "memory.h"</code>
<code>template</code><code><</code><code>typename</code> <code>T></code>
<code>void</code> <code>TypePrint(T v);</code>
<code>template</code><code><</code><code>typename</code> <code>T,</code><code>int</code> <code>M,</code><code>int</code> <code>N></code>
<code>class</code> <code>Matrix</code>
<code>{</code>
<code>public</code><code>:</code>
<code> </code><code>Matrix(</code><code>void</code><code>){</code>
<code> </code><code>data = </code><code>new</code> <code>T[M*N];</code>
<code> </code><code>};</code>
<code> </code><code>~Matrix(</code><code>void</code><code>){};</code>
<code> </code><code>int</code> <code>getVIndex()</code>
<code> </code><code>{</code>
<code> </code><code>return</code> <code>M;</code>
<code> </code><code>}</code>
<code> </code><code>int</code> <code>getHIndex()</code>
<code> </code><code>return</code> <code>N;</code>
<code> </code><code>T getxy(</code><code>int</code> <code>x, </code><code>int</code> <code>y)</code>
<code> </code><code>return</code> <code>data[x*N+y];</code>
<code> </code><code>void</code> <code>setxy(</code><code>int</code> <code>x, </code><code>int</code> <code>y,T f)</code>
<code> </code><code>data[x*N + y] = f;</code>
<code> </code><code>void</code> <code>setdata(T*datap,</code><code>int</code> <code>size)</code>
<code> </code><code>memcpy</code><code>(data,datap,size);</code>
<code> </code><code>Matrix<T,N,M> transpote()</code>
<code> </code><code>Matrix<T,N,M> m;</code>
<code> </code><code>for</code><code>(</code><code>int</code> <code>i = 0; i < M; i++)</code>
<code> </code><code>{</code>
<code> </code><code>for</code><code>(</code><code>int</code> <code>j = 0; j < N; j++)</code>
<code> </code><code>{</code>
<code> </code><code>m.setxy(j,i,getxy(i,j));</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code>return</code> <code>m;</code>
<code> </code><code>Matrix<T,M,N> operator+(Matrix<T,M,N> &adv)</code>
<code> </code><code>m.setxy(getxy(i,j)+adv.getxy(i,j));</code>
<code> </code><code>Matrix<T,M,N> operator-(Matrix<T,M,N> &adv)</code>
<code> </code><code>m.setxy(getxy(i,j)-adv.getxy(i,j));</code>
<code> </code><code>bool</code> <code>operator==(Matrix<T,M,N> &adv)</code>
<code> </code><code>if</code><code>(getxy(i,j)!=adv.getxy(i,j))</code><code>return</code> <code>false</code><code>;</code>
<code> </code><code>return</code> <code>true</code><code>;</code>
<code> </code><code>bool</code> <code>operator!=(Matrix<T,M,N> &adv)</code>
<code> </code><code>if</code><code>(getxy(i,j)!=adv.getxy(i,j))</code><code>return</code> <code>true</code><code>;</code>
<code> </code><code>return</code> <code>false</code><code>;</code>
<code> </code><code>void</code> <code>print()</code>
<code> </code><code>printf</code><code>(</code><code>"\n"</code><code>);</code>
<code> </code><code>TypePrint(getxy(i,j));</code>
<code> </code><code>printf</code><code>(</code><code>",\t"</code><code>);</code>
<code> </code><code>printf</code><code>(</code><code>"\n"</code><code>);</code>
<code>private</code><code>:</code>
<code> </code><code>T *data;</code>
<code>};</code>
<code>template</code><code><</code><code>typename</code> <code>T,</code><code>int</code> <code>M,</code><code>int</code> <code>N,</code><code>int</code> <code>P></code>
<code>Matrix<T,M,P> operator*(Matrix<T,M,N> &x, Matrix<T,N,P> &y)</code>
<code> </code><code>Matrix<T,M,P> m;</code>
<code> </code><code>for</code><code>(</code><code>int</code> <code>i = 0; i < M; i++)</code>
<code> </code><code>for</code><code>(</code><code>int</code> <code>j = 0; j < P; j++)</code>
<code> </code><code>T v = 0;</code>
<code> </code><code>for</code><code>(</code><code>int</code> <code>k = 0; k < N; k++)</code>
<code> </code><code>v += (x.getxy(i,k)*y.getxy(k,j));</code>
<code> </code><code>m.setxy(i,j,v);</code>
<code> </code><code>return</code> <code>m;</code>
<code>}</code>
<code>Matrix<T,M,N> operator*(Matrix<T,M,N> &x, T y)</code>
<code> </code><code>Matrix<T,M,N> m;</code>
<code> </code><code>for</code><code>(</code><code>int</code> <code>j = 0; j < N; j++)</code>
<code> </code><code>m.setxy(i,j,m.getxy(i,j)*y);</code>
<code>Matrix<T,M,N> operator*(T y,Matrix<T,M,N> &x)</code>
<code> </code><code>return</code> <code>x*y;</code>
<code>template</code><code><></code>
<code>void</code> <code>TypePrint(</code><code>float</code> <code>v)</code>
<code> </code><code>printf</code><code>(</code><code>"%f"</code><code>,v);</code>
<code>void</code> <code>TypePrint(</code><code>int</code> <code>v)</code>
<code> </code><code>printf</code><code>(</code><code>"%d"</code><code>,v);</code>
<code>#define type float</code>
<code>int</code> <code>d1[] =</code>
<code> </code><code>1,2,</code>
<code> </code><code>2,3,</code>
<code> </code><code>3,0</code>
<code>int</code> <code>d2[] =</code>
<code> </code><code>2,-3,0,</code>
<code> </code><code>0,1,-2,</code>
<code> </code><code>-4,5,10</code>
<code>int</code> <code>main()</code>
<code> </code><code>Matrix<</code><code>int</code><code>,3,2> s;</code>
<code> </code><code>s.setdata(d1,</code><code>sizeof</code><code>(d1));</code>
<code> </code><code>Matrix<</code><code>int</code><code>,3,3> s1;</code>
<code> </code>
<code> </code><code>s1.setdata(d2,</code><code>sizeof</code><code>(d2));</code>
<code> </code><code>Matrix<</code><code>int</code><code>,3,2> s2 = s1*s;</code>
<code> </code><code>Matrix<</code><code>int</code><code>,2,3> s3 = s2.transpote();</code><code>//转置了</code>
<code> </code><code>s.print();</code>
<code> </code><code>s1.print();</code>
<code> </code><code>s2.print();</code>
<code> </code><code>s3.print();</code>
<code> </code><code>return</code> <code>0;</code>
<code>} 本文转自莫水千流博客园博客,原文链接:http://www.cnblogs.com/zhoug2020/p/7803888.html,如需转载请自行联系原作者</code>