2012-02-08 28 views
0

私はVC++ 2008で作業しており、多次元の文字配列を割り当ててファイル操作を行っています。私は配列が割り当てられるたびに、配列のすべてのメンバーが通常は連続した順序で初期化されるべきであることを知っています。私は現在これを持っています。 多次元配列を初期化するC++

char ** thing = new char *[lineY]; 
for (int ii = 0; ii < lineY; ii++){ 
    thing[ii] = new char[lineX]; 
} 
... // working with array 
// deleting each part of the array. 
for (int ii = 0; ii < lineY; ii++){ 
    delete [] thing[ii]; 
} 
delete [] thing; 

私はに実行している問題は、私は監視リストに配列を追加し、またはそのデバッガの状態を割り当てられて右後の休憩を入れた場合、配列は、51のような数に等しいことということですか32、およびないインデックス、および値を持つスペースのブロックが、私は、この私の割り当てを行うことで、各指標の値を初期化しよう:

char ** thing = new char *[lineY]; 
for (int ii = 0; ii < lineY; ii++){ 
    thing[ii] = new char[lineX]; 
     for (int jj = 0; jj < lineX; jj++){ 
     thing[ii][jj] = ''; 
    } 
} 

編集:コンパイラは、「C2137空の文字定数」午前をスローします私は何か間違っている? 編集:エラー番号にmsdnを読み取り、回答が見つかりました

+0

ちょっと疑問、なぜ地球上であなたが手動n次元配列の割り当てをしますか? – ScarletAmaranth

+0

@ScarletAmaranth動的インスタンスの重要な原則を覚えている限り、動的に手動で動的にメモリを割り当てても問題ありません。あなたが持っているものを管理し、必要なときにだけ割り当てることができます。それ以外にも、n次元配列を割り当てるオブジェクトをインスタンス化するのと同じことになります。私はアクセサの全体の混乱を避けるだけです。 – gardian06

+0

常に1つの配列を割り当て、すべての要素を行/列メジャー順に格納し、2D配列のように動作するポインタを設定することができます。 – suszterpatt

答えて

1

''は許可されていないため、thing[ii][jj] = ''を書くことはできません。 ''' '(スペースは'sの間)に置き換えてみてください

0

lineXとlineYのコンパイル時定数はありますか?その場合:それ以外の場合は

std::array<std::array<char, lineX>, lineY> thing; 

std::vector<std::vector<char> > thing(lineY, std::vector<char>(lineX)); 
関連する問題