在C ++中将原始指针更改为smart

时间:2013-04-02 10:08:26

标签: c++ pointers smart-pointers

有一个简单的函数可以创建一个存储在数组中的零填充矩阵。

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?

1 个答案:

答案 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;

}