• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CArray)

C言語のプログラムをC++で書き直す際にCArrayを使用する方法

このQ&Aのポイント
  • C言語で書かれたプログラムをC++に書き直す際、mallocを使用せずにCArrayを使用することが推奨されました。
  • CArrayは、動的配列を扱うためのクラスであり、メモリの確保や解放を自動的に行います。
  • mallocを使用すると、メモリの確保や解放を手動で行う必要がありますが、CArrayを使用することで煩雑な作業を省略することができます。

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

おっと, コンストラクタで大きさを設定できないのか. 構造体を CArray に突っ込めばいいです. 「現状からなるべくいじらない」方針で行くなら ・my *data; を CArray<my> data; にする ・data = malloc(...); の代わりに data.SetSize(line2); ・qsort(data,line,sizeof(my),comp_rtn); を qsort(data.GetData(),line,sizeof(my),comp_rtn); にする の 3か所をいじればいいんじゃないかな. まあ, 「CArray を使う意味」はほとんどありませんが. 本格的に CArray を使うのであれば ・最初の「行数を数える」ところをすべて削る ・必要に応じて data.Add がさらに追加されます. でも, #1 でも書いたけど std::vector が使えるようになるとよりよいと思う.

rooding
質問者

お礼

できました。ありがとうございました

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

CArray についてどのくらい調べたのでしょうか? 基本的には malloc でメモリを確保する代わりに CArray のコンストラクタで確保するだけだと思うんだけど.... もっとも, 個人的には CArray よりも std::vector の方が安心できるような気がする. ついでに char の配列もやめて std::string を使うとより安心.

rooding
質問者

補足

うーん C言語の配列に似てるけど配列の縮小や拡張ができる といった利点ぐらいでしょうか。後メンバ関数でどんなことができる とかですね。要はCArrayの使い方がわからないんですよね。 ヘルプはあんまり初心者向きにはなってないですから。 例えばCArray<CString, CString> test; として test.Add(/*追加したい内容*/)とかそういった超基本的な使い方は わかるんですけど、構造体をCArrayで格納すればいいのか、 色んなころがごちゃごちゃになって思考がおいつかない状態です。

関連するQ&A

専門家に質問してみよう