【发布时间】:2020-04-25 02:37:24
【问题描述】:
嘿,所以我目前有一个 3D 对象数组,但我想让它的一半索引为负数。我很确定我看到了一些关于负数组如何导致错误和崩溃的信息,这也是真的吗? 如果有任何帮助,这就是我用来制作数组的代码。
//creates 3 dimensional array
vGrid = new Vox * *[arraySize];
for (int x = 0; x < arraySize; x++)
{
vGrid[x] = new Vox * [arraySize];
for (int y = 0; y < arraySize; y++)
{
vGrid[x][y] = new Vox[arraySize];
}
}
任何帮助将不胜感激,谢谢!
【问题讨论】:
-
嘿,所以我目前有一个 3D 对象数组,但我想让它的一半索引为负数 -- 这正在进入XY Problem 领域
-
提示:如果你有一个指针
Vox *p=new Vox[10];,你最终会得到p[0]到p[9]。但是如果你添加五个:Vox *p=new Vox[10]; p += 5;,现在你有p[-5]到p[4],看起来,一个带有负索引的数组。在你看来是这样吗?确实如此。它确实不是,但它是一个很好的模拟。只需将相同的原理扩展到多个维度,就可以结束了。哦,你仍然需要记住delete得到了newed,它必须是相同的原始指针,而不是偏移量。这是一项艰巨且容易出错的工作,但这是可能的。
标签: c++ multidimensional-array dynamic-arrays