有一个简单的函数可以创建一个存储在数组中的零填充矩阵。
void zeroMatrix(const int rows, const int columns, void* M)
{
for(int i = 0; i < rows; i++)
for(int j = 0; j < columns; j++)
*(((double *)M) + (rows * i) + j) = 0;
}
如何更改代码以使用std::unique_ptr<double>
作为M?
答案 0 :(得分:2)
由于没有所有权转移到zeroMatrix
功能,您需要的是参考:
(假设M是向量)
void zeroMatrix(const int rows, const int columns, std::vector<double> &M)
{
for(int i = 0; i < rows; i++)
for(int j = 0; j < columns; j++)
M[(rows * i) + j] = 0;
}