如何在C ++中将const引用分配给函数中的指针?

时间:2019-06-05 16:34:04

标签: c++ pass-by-reference

我有一个功能

void assign(std::vector<std::vector<double>> avg, int k) {
    double* ptr=&avg[k-1][0]
    //other stuff, but above is only line involving "avg" variable
}

但是该函数的运行速度比我想要的慢,因为我按值传递而不是引用传递。如果我尝试以下操作:

void assign(const std::vector<std::vector<double>>& avg, int k) {
    double* ptr=&avg[k-1][0]
    //other stuff
}

然后我得到错误cannot convert from const_Ty * to double*。我该如何通过引用传递avg函数?

1 个答案:

答案 0 :(得分:3)

您不能直接或间接修改const对象。这包括分配给可以修改的对象(非常量)。

有2个选项:使ptr成为常量,或除去参数的常量。前者将使指针变为只读(可能是好的,也可能不是),而后者将打开对更改的引用(在大多数情况下,这并不是一件好事)。

您还可以考虑是否真的需要该指针。