【发布时间】:2014-04-05 05:02:56
【问题描述】:
我一直在研究 Passing a 2D array to a C++ function 以及其他一些类似的文章。但是,我遇到了一个问题,我正在创建的数组有两个可变大小的维度。
初始化如下:
int** mulePosition;
mulePosition = new int *[boardSize][boardSize][2];
函数如下:
int moveMule (int boardSize, int ***mulePosition)
参考看起来像
moveMule (boardSize, mulePosition)
Boardsize 在函数的开头定义,但每次执行可能会改变。 适当大小的数组将是 int [boardSize][boardSize][2]。
【问题讨论】:
-
使用一些合理的 C++ 类型,比如向量的向量。
-
是的,代码不起作用。声明是 int** 但数组是 3 维的。但是,int*** 会抛出自己的错误。
-
@jbzdarkid 那是因为
int*[n][n][2]是一个由n 个数组组成的数组,其中n 个数组包含2 个指向int的指针。这就是为什么您通常不希望在有替代方案(例如包装平面数据结构或 typedef 的类)时使用这些组合类型。
标签: c++ arrays variables multidimensional-array pass-by-reference