我正在尝试使用 2D 数组来跟踪以网格方式布置的一些对象。我希望 2d 数组的每个元素都包含一个Object*
. Object
作为我定义的类。然而,使用这些东西并不容易。
这是我用Object
指针填充二维数组的方法:
int xDim;
//how far to go in the x direction
//x's Dimension that is
Object *** test; //the highest level pointer used
test = new Object ** [xDim];
//add horizontal array of Object **
for(int fillPos=0; fillPos < xDim; fillPos++){
//point each Object ** to a new Object * array
//add column arrays
test[fillPos] = new Object*[zDim];
}
我的意图是使用这个数组的Object
指针指向 的子类Object
,比如说childObj
。我的意图是以这种方式使用它们。
for (int xPos=0; xPos < xDim; xPos++){
for(int zPos=0; zPos < zDim; zPos++){
//pointing each Object * in the 2D array to
//a new childObj
test[xPos] [zPos] = new childObj;
}
}
我意识到这在记忆方面可能是一个真正的麻烦。我在问这是否是处理这种情况的好方法。也许像这样
的东西vector< <vector<Object*> >
可以更好地工作?向量会很好地管理删除以避免内存泄漏吗?或者也许我只需要遍历向量并在摆脱向量之前调用delete
每个向量?Object*
那么,我应该使用现有的数组还是向量?每种方法可能存在哪些问题?