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

我不想使用创建“新”数组命令。上面的代码和使用 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

这是不一样的。创建一个动态大小的数组new是合法的,你的代码不是。如果你问我,那差别很大。

以下是虽然

std::vector<int> arrayMain(arraySize);
于 2013-02-19T23:04:44.713 回答
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 回答