グリッド形式で配置されているいくつかのオブジェクトを追跡するために、2D配列を操作しようとしています。2D配列のの各要素に。を含めたいと思いますObject*
。Object
私が定義したクラスであること。ただし、これらを処理するのは簡単ではありません。
これは、2D配列を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*
それで、私が持っているように配列またはベクトルを使用する必要がありますか?各方法に関連するいくつかの問題は何でしょうか?