我可以使用此代码创建动态数组吗?

时间:2013-02-19 23:03:51

标签: c++ arrays

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

我不想使用create“new”数组命令。以上代码是否与使用新命令创建新数组相同?

3 个答案:

答案 0 :(得分:6)

  

以上代码是否与使用新命令创建新数组相同?

不,C ++中的语法无效。请改用std::vector

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

用法相同。

答案 1 :(得分:1)

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

以下是

std::vector<int> arrayMain(arraySize);

答案 2 :(得分: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>;

注意这是多么容易!这就是为什么你想要使用向量来完成这种任务的原因。 (当作业允许时。)