1

私の主な質問は次のとおりです。

ポインターを使用して多次元配列を宣言するより良い (またはより効率的な) 方法はありますか? 私は自分がしたことで正しい軌道に乗っていますか?

プログラミング演習:

C++ for Foolsという本を販売しています。2 次元配列を使用して、3 年間の月間売上 (金額ではなく本の数) の入力を格納します。合わせた年の合計売上高を報告します。プログラムは、月の文字列に初期化され、入力データを 2 次元配列に格納する文字列オブジェクトの配列を使用して、月ごとにプロンプ​​トを表示するループを使用する必要があります。次に、プログラムは配列の内容の合計を見つけ、3 年間の総売上高を報告する必要があります。

これは私のコードのスニペットです:

/* Global constants */
const unsigned int YRS = 3;
const unsigned int MNTHS = 12;

/* Create 2D-Array */
int** bookSalesArrayPtr = new int*[YRS];    // Pointer-to-Array-of-Pointers
for (unsigned int i = 0; i < YRS; ++i)      // Each element of bookSalesArrayPtr
    bookSalesArrayPtr[i] = new int[MNTHS];  // In each element create new array[12]

ここに私の完全なソース コードへのリンクがあります: http://ideone.com/LcQeuj

4

1 に答える 1

-1

ソリューションはできるだけシンプルにする必要があります。ポインターが必要ない場合は、プログラムを複雑にする傾向があるため、ポインターを使用しないでください。

int  bookSales[YRS][MNTHS];

これがいかに読みやすいかに注目してください。割り当て、破棄、またはその他の簿記を管理するコードがないことに注意してください。

そのような構造が実行時間を増加させたとしても (そしてそれはここでは非常にありそうもないことです)、これがどれだけの人的時間 (開発者、メンテナー、デバッガー、ドキュメンテーション) を節約できるかを考えてみてください。コンピューターの時間は安いです。人間の時間は貴重です。

ソリューションを評価するとき、人的コストを見落とすことはよくあることです。

于 2012-10-28T22:22:57.460 に答える