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

标签 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

最佳答案

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

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

你也可以考虑是否真的需要那个指针。

关于c++ - 如何在 C++ 中将 const 引用分配给函数内的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56464631/

相关文章:

c++ - 如何从非虚拟的基类调用析构函数?

c++ - 用 SDK c++ 打包 indesign 文档

Java编程报错Pass by reference

c++ gluLookAt的OpenGL显示问题

c++ - std::vector 作为模板参数...一切都乱套了

c++ - 为什么这个 Rcpp 代码比字节编译的 R 慢?

ruby - 如何将字符串传递给函数而不是 ref (Ruby)

Java - 将指向对象的指针传递给函数

php - 递归无限循环?

language-agnostic - 按引用传递与按值传递有什么区别?