要素数の決まっていない配列

[戻る]
初心者8号 2002/10/24(木) 13:40:21
今、構造体配列を使用した処理を行っております。
この構造体配列の要素数は不定であり、また途中の操作で追加したい場合もあります。
つまりプログラムが開始してから出ないと要素数が分かりません。
この場合一般的にはどのような回避方法があるでしょうか?

例えば下のようなことをすると定数式が必要です
と怒られてしまいます。当たり前ですけど・・・

int sosu = 3;
int aaa[sosu];
aaa[0] = 3;

ku 2002/10/24(木) 14:12:47
malloc()やnew、WindowsならGlobalAlloc()などで実現できます
STLならvectorなどを使っても実現できます

こういった掲示板は思いついた疑問を書き込むところではありません
質問の仕方は悪くはないし、言いたいことも分かるが、内容が問題
まずは初心者用の本をきっちり読み内容を理解するように努力してください
また、質問する場合は自分で調べてどうしても分からない場合に
質問するようにしましょう

ku 2002/10/24(木) 14:20:19
読み損ねてましたが追加したいこともあるのですね
それならnewは無理だろうね
失礼しました

malloc()とrealloc()か
GlobalAlloc()とGlobalReAlloc()か
vectorなんてのをまずは調べてみてください

アイススケーター 2002/10/24(木) 14:42:16
>また途中の操作で追加したい場合もあります。

MAXサイズにもよるのですが、全体で1MB以下の場合は、あらかじめ
エリアを確保しておいたほうが簡単です。
1個づつ追加していく場合は、構造体のポインタで管理はできますが、
データベースの管理みたいになって複雑になると思いますが・・・

またサイズが大きい場合は、どのみちファイルに頼る必要があると思います。

初心者8号 2002/10/24(木) 15:15:58
[[解決]]
大変申し訳ありませんでした。
以後はなるべく調べてから質問いたします。

構造体のメンバーはintが5つCStringが1つの構造体で
考えられる要素数の最大は追加もあわせて2400となっています。
さっそくサイズを測ってみたところ57600バイトでしたので
最初から確保することに決めました。

ありがとうございます。

kazuma 2002/10/24(木) 15:25:11
解決してしまいましたが参考までに。
vectorの(簡単な)使い方です。

int sosu = 3;
std::vector<int>  aaa(sosu);  // int型の配列。要素数はsosu。
aaa[0] = 3;       // 普通の配列と同じように使える。
aaa.push_back(5); // 末尾に要素を追加。要素数は1増える。

古いスレッドには追加発言できません。