int arraySize;
cout << "\n\nEnter Total Number of Elements in Array.\n\n";
cin >> arraySize;
int arrayMain[arraySize];
我不想使用create“new”数组命令。以上代码是否与使用新命令创建新数组相同?
答案 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>;
注意这是多么容易!这就是为什么你想要使用向量来完成这种任务的原因。 (当作业允许时。)