0

ユーザーの要求に応じて配列を作成できることを知りたいです。例えば

  1. ユーザーに「コーヒーが欲しいですか」と尋ねます。2。ユーザーが「はい」と言って、コーヒーオブジェクトの配列を作成した場合。....。
  2. ユーザーに「別のコーヒーを飲みたいですか」と尋ねます。
  3. ユーザーが「はい」と言った場合は、コーヒークラスの別の配列を作成します。そうでない場合は、作成しません。

これは達成可能ですか、それとも固定数のアレイを作成する必要がありますか?

4

2 に答える 2

2

一部のコンパイラ(g ++など)がVLAの拡張機能を提供する場合を除いて、C++で実行時に固定サイズの配列を作成することはできません。

std::vector代わりに使用してください。それはあなたのコントロールに従って成長し、要件が完了すると自動的に割り当てを解除します。

編集std::vectoraskerは使用できないため、new[]「some」擬似コードで使用する方法は次のとおりです。

Coffee **pQuestions = new Coffee* [n]; // n - number of times coffee is asked
for(uint i = 0; i < N; ++i)
{
  /* ask for Coffee */
  if(/* yes */)
    pQuestion[i] = new Coffee[size]; // whatever array size you want
}

ここnsize、必要に応じて変数(定数にすることもできない)もあります

後で完了したら、すべてのメモリの割り当てをdelete[] pQuestions[i];ととして割り当て解除しますdelete[] pQuestions;

于 2012-10-05T04:56:08.837 に答える
0

std :: vectorのような標準のコンテナクラスを使用できます。これにより、任意であるが指定されたタイプのサイズ変更可能なベクトルが提供されます。もちろん、ベクトルのベクトル、またはキューのベクトルなどを持つことができます。

(手動で割り当てられたポインターとCのコードを使用することもできますが、STLが提供する強力なコンテナーを使用する方が適切です)。

于 2012-10-05T04:56:20.487 に答える