cv :: MatExpr的目的是什么?

Owe*_*wen 2 opencv

OpenCV算术运算产生一个cv::MatExpr,例如:

MatExproperator+(const Mat & a, const Mat &b);

我看到这用于在计算表达式之前表示它.这样做的目的是什么?

Pqq*_*iqe 7

假设你有这样的表达:
Mat A = 3 + B * 5;
其中B也是一个Mat.如果运算符+*返回的位置Mat,B * 5将创建一个临时的Mat,然后+运算符将创建另一个Mat.相反,B * 5返回一个MatExpr实际上没有创建的东西Mat,它只是"记住"它需要执行的操作.然后,+操作员创建另一个MatExpr,只有=操作员创建一个Mat,从而避免临时Mat.
请参阅https://en.wikipedia.org/wiki/Lazy_evaluation