0
int arraySize;
cout << "\n\nEnter Total Number of Elements in Array.\n\n";
cin >> arraySize;
int arrayMain[arraySize];

create "new" array コマンドは使いたくありません。上記のコードは、new コマンドを使用して新しい配列を作成するのと同じですか?

4

3 に答える 3

6

上記のコードは、new コマンドを使用して新しい配列を作成するのと同じですか?

いいえ、構文は C++ では無効です。std::vector代わりに使用してください:

int arraySize;
cout << "\n\nEnter Total Number of Elements in Array.\n\n";
cin >> arraySize;
std::vector<int> arrayMain(arraySize);

それ以外の使用法は同じです。

于 2013-02-19T23:04:59.997 に答える
1

C++ で配列を動的に割り当てる必要があり、教室での割り当ての規則によって組み込み配列の使用が強制される場合は、new キーワードと delete キーワードが必要になります。

int arraySize;
cout << "\n\nEnter Total Number of Elements in Array.\n\n";
cin >> arraySize;

int* arrayMain = new int[arraySize];
// use arrayMain here
delete [] arrayMain;

メモリを動的に割り当てたくないが、最大値がわかっている場合は、最大値を割り当てて、必要のないものを使用しないようにすることができます。

const int arraySizeMax = 51;
int arraySize;
do
{
  cout << "\n\nEnter Total Number of Elements in Array, no more than 50.\n\n";
  cin >> arraySize;
}
while(arraySize >= arraySizeMax);

int arrayMain[arraySizeMax];
// use arrayMain here
// No need for delete, since you didn't use new.

メモリを動的に割り当てたくない場合や最大値がない場合は、次のような標準のコンテナーを使用する必要がありますvector

vector<int>;

これがいかに簡単か注目してください!これが、この種のタスクにベクトルを使用する理由です。(割り当てが許可されている場合。)

于 2013-02-19T23:15:25.993 に答える
1

それは同じではありません。で動的サイズの配列を作成することnewは合法ですが、あなたのコードはそうではありません。私に言わせれば、それはかなり大きな違いです。

以下ですが

std::vector<int> arrayMain(arraySize);
于 2013-02-19T23:04:44.713 に答える