私は、グリッド形式でレイアウトされたいくつかのオブジェクトを追跡するために、2D配列で作業しようとしています。私は2次元配列の各要素にObject*
を含めることを望みます。 Object
は私が定義したクラスです。しかし、これらのことに取り組むのは簡単ではありません。2Dベクトル/ダイナミックアレイ
これはObject
ポインタを持つ2次元配列を埋めるための私の方法です:
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*> >
のようなものが良いでしょうか?ベクトルはメモリリークを避けるために削除をうまく管理しますか?または、おそらく私は単にベクトルをループして、それぞれを各Object*
に呼び出してから、ベクター自体を取り除く必要がありますか?
私はベクターを持っているので、配列を使うべきですか?それぞれの方法に関連する問題は何か?
スマートポインタに2Dベクトルを使用します。 – chris
'ベクトル<<ベクトル
@dasblinkenlight配列を使用して、単一の子クラスを指すだけでなく、同じ配列内の複数の異なる子クラスを指し示したいと思います。これは、Objectクラス自体の代わりにポインタを使用する私の好みの理由です。 – Cerin