C++:通过常量引用传递指针矩阵

C++: pass matrix of pointers by const reference

本文关键字:指针 引用 常量 C++      更新时间:2023-10-16

我的问题有点简单,可能很愚蠢,但是如果我有一个像int ** max这样的动态矩阵并将其传递给函数calculateCost(int ** max, int n))

我的问题是:如何将其作为参考传递const

不可能传递指针引用(请参阅此答案(。

因为引用不是对象,所以没有引用数组, 没有指向引用的指针,也没有指向引用的引用:

int& a[3]; // error
int&* p;   // error
int& &r;   // error

您可能希望使用 STL 的向量来替换您拥有的每个指针。 int calculateCost(const std::vector> &max, int n(;

这将允许您执行指针可以执行的所有基本运算符,但具有额外的功能,例如更容易初始化,调整大小和ranged_for_loops。

template<typename T>
using matrix_t = std::vector<std::vector<T>>;
size_t width = 5, height = 3;
// std::vector<std::vector<int>> is the same as matrix_t<int>
matrix_t<int> my_matrix(height, std::vector<width, 0>);

这里有一些有用的链接来替换malloc,新的,删除...
- 来自 2d 常量阵列
的 2d 矢量- unique_ptr
- shared_ptr
- make_unique
- make_shared

祝您新年快乐!

编辑: 如上述评论所述,在您的情况下使用 refs 是没有用的,您可以只使用 const 双指针