【发布时间】:2023-04-04 02:22:01
【问题描述】:
我刚刚参加了当地大学的考试,他们要求我基本上做一个探路者。我被卡住了,因为我真的想将二维数组传递给一个函数。还没想出堆分配双指针的想法,不过现在想来,好像不能像这样传下去真的很难看
int function(int matrix[][]); 或者 int function(int& matrix[][]); 类似的东西。这种限制背后的逻辑是什么?没有malloc,有没有办法在堆栈上做到这一点?
编辑
该数组是动态的,我被限制使用任何包装器,包括标准库中的包装器
【问题讨论】:
-
传递多维
std::array或std::vector。忘记 C 风格的数组或将数组作为指针+大小传递 - 在 C++ 中,我们有更好的选择。请不要在 C++ 程序中使用malloc。 -
限制在C中也是一样的,怎么知道数组的维数?因此,在 C++ 中,您使用向量或矩阵类,在 C 中,您将使用
int**并传递宽度和高度。 -
我不明白为什么大学仍在教授严重过时的 C++98。让我难过☹️
-
@Galik
std::array与 C 样式数组一样快。如果您需要动态数组,如果您想击败std::vector,您将面临真正的挑战。真的没有借口在 C++ 中使用 C 样式数组。
标签: c++ function multidimensional-array stack