2D配列:割り当てCell **scoreTable
.After:C++の2Dオブジェクト配列ですか?など
scoreTable = new Ceil*[10];
for(int i = 0 ;i<10;i++)
scoreTable[i] = new Ceil[9];
そして、私はこのような値を保存したい:。scoreTable[i][j]= new Ceil(i,j)
ヒープで、これは助けのためにC++でのおかげで作業することはできません。
2D配列:割り当てCell **scoreTable
.After:C++の2Dオブジェクト配列ですか?など
scoreTable = new Ceil*[10];
for(int i = 0 ;i<10;i++)
scoreTable[i] = new Ceil[9];
そして、私はこのような値を保存したい:。scoreTable[i][j]= new Ceil(i,j)
ヒープで、これは助けのためにC++でのおかげで作業することはできません。
あなたはこのようなあなたの配列を割り当てられたら、あなたはすでに持っていますCell
の2D配列なので、new
キーワードを使用して値を変更する必要はありません。
あなたCell
クラスにSetValue(i,j)
のような方法を与える場合は、このようにそれを使用することができます:scoreTable[i][j].SetValue(i,j);
私はあまりにも多くのことを考えました、ありがとう、ちょうど新しい方法を追加して、それは良いです。 – sinjon87
scoreTable[i][j]= new Ceil(i,j)
。 Cell*
をCellに入力しようとしています。
あなたはポインタの2次元配列を作成する必要があります。
auto scoreTable = new Ceil**[10];
for(int i = 0 ;i<10;i++)
scoreTable[i] = new Ceil*[9];
をしかし、もっと良いvector
を使用することです:
std::vector< std::vector<Ceil*> > table;
table.resize(10);
for (int i = 0; i < 10; ++i)
{
table[i].resize(9, NULL);
}
table[3][4] = new Ceil();
は、私が代わりにstd::vector
を使用することをお勧めします。それは追跡するのがずっと簡単です。
あなたは、これはvector<Cell>
の10の元素、9個の細胞を含む各を含むベクターであるscoreTable
を作成する
std::vector< std::vector< Cell> > scoreTable(10, std::vector<Cell>(9));
して上記すべてのコードを置き換えることができます。換言すれば、所望の2Dテーブル。
同じように要素にアクセスします。私は9にフロン0移行し、
あなたは新しい行に拡張したい場合は0から8のJ scoreTable[i][j]
は、ちょうど言う:新しい列の
scoreTable.push_bach(std::vector<Cell>(9));
:
for(size_t row = 0; row < scoreTable.size(); ++row) {
scoreTable[row].push_back(Cell());
}
new
またはdelete
の必要はありません。
はい、試してみると良い方法です。ありがとうございます。 – sinjon87
入れ子の 'std :: vector>'を使用することを検討しましたか? –
moooeeeep
read http://www.parashift.com/c++-faq-lite/freestore-mgmt.html#faq-16.16 –