标签:
设计一个功能相当完善的包装很好的矩阵类(方便自己使用)
(主要是当时那个矩阵用的Struct 写,现在感觉好烂。。其实当时用struct写主要是利用他的=号赋值直接拷贝内存块,写成类的话,又得多几个构造函数。。。)
权当成自己的一个类设计练习题吧(我的OOP设计很烂。。。),预计完成时间:不定(我会尽量抽出时间更新)
<下面是一些自己考虑的实现方式>
自己不会template的缘故?,同时template写起来确实可能有些慢,所以我用typedef MatrixDataType 来搞,这样可能会影响某些情况下的使用?。。例如用大数做矩阵的成员。。(好吧,这个以后在考虑,我得有时间看template)
因为是ACM用的原因,我考虑使用vector来实现矩阵的行列,动态分配内存的话,倒不是难写,主要是怕速度跟不上
但是这里依旧存在一个问题,vector内部实现是用申请的一整块内存块,如果这个内存块不够装了,再开新的,之后把旧的复制过去,也就是可能存在调整的代价O(R*C)
所以我打算设计成两种方式,一种预先指定 R,C 的大小(这样就不会发生那种情况),一种是不指定(可能速度会有影响)
之后运算符全部重载,除号的话也重载吧。。
< R,C 的话都从0开始吧
初始化的话:
1.初始化成对角矩阵
2.初始化成全0矩阵
修改的话
1.将某行某列改成某个数
2.将第【L,R】行上的所有元素全部加上某个值
3.将第【L,R】列上的所有元素全部加上某个值
其他方法:
1.获取当前的行数
2.获取当前的列数
前面两个是OOP要求的,毕竟要封成private
3.再加入一行,带入的是vector的引用,会检查列是否对齐
4.再加入一列,带入的是vector的引用,会检查是否符合行数
5.快速幂,重载两种方法,一种是需要mod的,一种是不需要mod的.
6.输出某一行的和
7.输出某一列的和
暂时就这样吧,各位如果还有什么想法,可以在下面回复我
目前完成进度 : 0 %
----------------------Code-----------------------------
标签:
原文地址:http://www.cnblogs.com/Xiper/p/4634617.html