OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

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

  • 困ってます
  • 質問No.103042
  • 閲覧数479
  • ありがとう数0
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 24% (32/133)

はじめまして。

この度、ちょっとした計算プログラムを作ることになったのですが、
タイトルにもありますように、
『動的に作成した構造体配列の中に、さらに動的に構造体配列を作る』
方法がわからずに困っています。
実際には下記のようにプログラムしたいのですが...

-------------------------------------------------
'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'の構造体のサイズも大きめなので、断念せざるをえませんでした。

どなたか、このように配列を作成する方法を知っている方がいましたら、
是非教えていただきたいです。

下手な説明ですいません。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル8

ベストアンサー率 51% (21/41)

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

お礼率 24% (32/133)

回答ありがとうございました。

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

よろしくお願いいたします。
投稿日時 - 2001-07-12 23:28:15
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1

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

つまり、a[0]の次にb[0],b[1],...,b[a[0]],を配置し、
その次にa[1]をメモリ配置しようとしても位置が決まらないわけですから。


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ