我有一个功能
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
函数?
答案 0 :(得分:3)
您不能直接或间接修改const
对象。这包括分配给可以修改的对象(非常量)。
有2个选项:使ptr
成为常量,或除去参数的常量。前者将使指针变为只读(可能是好的,也可能不是),而后者将打开对更改的引用(在大多数情况下,这并不是一件好事)。
您还可以考虑是否真的需要该指针。