• ベストアンサー

動的に作成した構造体配列の中に、さらに動的に構造体配列を作るには?

はじめまして。 この度、ちょっとした計算プログラムを作ることになったのですが、 タイトルにもありますように、 『動的に作成した構造体配列の中に、さらに動的に構造体配列を作る』 方法がわからずに困っています。 実際には下記のようにプログラムしたいのですが... ------------------------------------------------- 'a'の構造体の中に作られる'b'の配列数は、下記のように 'a'の配列の番号により違い、また'a'の配列数も最初の段階では未定です。 構造体'a'←配列数未定 構造体'b'←配列数未定 a[0]-----b[0]  |    b[1]  |    b[2]  | a[1]-----b[0]  |    b[1]  | a[2]-----b[0]  |    b[1]  .    b[2]  .    b[3]  . ------------------------------------------------- new演算子で'a'の配列は作れたのですが、その中の'b'の数の分だけ 配列を動的に作成する方法がわかりませんでした。 最初は'b'の配列を多めに取って計算すればよいと思っていましたが、 計算過程で'b'の配列数が10000を越えてしまう場合があり、 また'b'の構造体のサイズも大きめなので、断念せざるをえませんでした。 どなたか、このように配列を作成する方法を知っている方がいましたら、 是非教えていただきたいです。 下手な説明ですいません。

質問者が選んだベストアンサー

  • ベストアンサー
  • nakashi
  • ベストアンサー率51% (21/41)
回答No.2

struct typDataB{  long lData1;  long lData2; }; struct typDataA{  typDataB* uDataB; }; void main() {  typDataA* uDataA;  uDataA = new typDataA [10];  uDataA[0].uDataB = new typDataB [20];  uDataA[0].uDataB[2].lData1=0;  uDataA[0].uDataB[2].lData2=2; } では、外しているかも

Ryo_Hyuga
質問者

補足

回答ありがとうございました。 ですが、またしても問題が発生してしまいました。 上でいうところの'uDataA'の配列を途中で増やす必要が出てきてしまいました。 もし、動的に配列を増やすことができるようであれば、そのやり方も教えていただきたいです。 よろしくお願いいたします。

すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#7273
noname#7273
回答No.1

構造体'a'の中で配列bを直接指定せずにポインタ型で指定し、 構造体'b'の宣言は構造体'a'の外に出し、別立てにしたらいかがですか。 つまり、a[0]の次にb[0],b[1],...,b[a[0]],を配置し、 その次にa[1]をメモリ配置しようとしても位置が決まらないわけですから。

すると、全ての回答が全文表示されます。

関連するQ&A