返回的时候,move出来
return std::move(pointer);
研究了一下,这里直接 return pointer;貌似也是可以的,实际执行时,因为unique_ptr不能copy,所以编译器按规则,调用了move;当然不如自己直接move语义更清晰。
我感觉这里面用shared_ptr应该也是可以的,问题是可能造成了不必要的开销。unique_ptr显然更合适。
现在的结果是,进入求伪逆函数本身不直接堆栈溢出了。当计算到最后,调用矩阵乘法运算符 *= 的时候,又堆栈溢出了。还得研究一下,怎么样进一步节省堆栈空间。我把临时变量都尽量在堆上生成了。还有什么办法涅?