码迷,mamicode.com
首页 > 其他好文 > 详细

Class - Project < Matrix >

时间:2015-07-10 02:13:29      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

设计一个功能相当完善的包装很好的矩阵类(方便自己使用)

(主要是当时那个矩阵用的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-----------------------------

Class - Project < Matrix >

标签:

原文地址:http://www.cnblogs.com/Xiper/p/4634617.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!