所以我正在尝试创建一个用于迷宫生成程序的 n 维数组结构。
我已经简化了我的问题(为了在模板化之前弄清楚理论并添加所有必要的辅助函数)
因此,我目前的问题归结为想要创建一个 ArbitraryArray 类,该类接受其构造函数的参数,指定维数。每个维度的长度 = 5。(现在)
这是我到目前为止所拥有的:
class ArbitraryArray{
public:
int array[5];
ArbitraryArray*subArray;
ArbitraryArray(){}
ArbitraryArray(int depth){
if (depth == 2) subArray = new ArbitraryArray[5];
else if (depth > 2) for (int i = 0; i < 5; i++) subArray = new ArbitraryArray(depth - 1);
}
};
我会像这样创建一个二维对象:
ArbitraryArray testArray(2);
或者像这样的 3 维对象:
ArbitraryArray testArray(3);
问题是,当我测试它的 depth = 3 然后尝试设置一个整数值时,通过:
testArray.subArray[3].subArray[4].array[4] = 7;
我收到一个运行时错误,让我相信我在动态分配这些对象的方式上做错了。
另外,我包含了一个空的默认构造函数,因为它被以下行调用:
subArray = new ArbitraryArray[5];
我知道这可能不是创建任意维数组数据结构的最佳方法,但我真的很想在可能寻找更好的方法之前弄清楚为什么这个实现不起作用。
我也知道我不应该有这样的一行:
int array[5];
并且它应该是一个指针,这样就不会为底部维度之上的所有级别的数组分配大量浪费的内存。我打算在我得到这个基本想法后对其进行修改。