- 主题:请教关于运算符重载
建议你看看eigen或者opencv的实现代码。
简单的说就B+C不要返回一个矩阵,而是返回一个代表B+C的类,这个类在opencv里叫做MatExpr。这个类有指向BC的指针,但是不计算。而在A的赋值构造函数中计算。
类似的技巧很多。基本原则就是把真正的计算尽量推迟到不得不算的时候。
【 在 ForSolitude 的大作中提到: 】
: 用大矩阵运算做例子
: 如果希望编程时写成这样: A = B + C;
: 但是在实现"+" 运算时,希望数据直接写进了A的存储空间,
: ...................
--
修改:dormouseBHU FROM 223.104.42.*
FROM 223.104.42.*
move只能解决一次运算的问题吧。
矩阵运算经常是 A = alpha B + beta C + gamma
或者 A = B C B.Transpose 类似这样的。
这样的 move 就解决不了了。
【 在 xyz3d 的大作中提到: 】
: 一般情况重载move的等于即可。
: T& operator=(T&& obj)
: 到时候c+b的临时结果被搬移到a,少一次拷贝。
: ...................
--
FROM 120.244.156.*
这个框架很强大
【 在 ilovecpp 的大作中提到: 】
: 不一定要自己实现,有boost yap之类框架。
: :
--
FROM 120.244.156.*