从动态数组复制到 C++ fpermissive 中的另一个动态数组
Copying from a dynamic array to another dynamic array in c++ fpermissive
我有一个数组,其大小在运行时确定。
cout<<"Enter size of array: ";
cin>>size1;
int* scores=new int[size1];
然后我填写这个分数数组。现在我想增加它的大小。我创建了一个新的动态数组。
int* newScores=new int[newSize1];
such that `newSize1 > Size1
现在我将旧乐谱的内容复制到新乐谱中:
for(int i=0; i<Size1;i++)
{newScores[i] = scores[i];
}
现在我必须要求 newScores 的剩余元素添加到它。
我做到了:
for(int j=size1;j<newSize1;j++)
{
newScores[j]=new int;
cout<<"Enter new score: ";
cin>>newScores[j];
}
编译时出现上述错误:
error: invalid conversion from ‘int*’ to ‘int’ [-fpermissive]
newScores[size1]=new int;
newScores[j]=new int;
是一个错误,没有必要。 newscores[j]
是一个 lvlalue int
,而 new int
returns int*
。但是你已经不需要分配它了——你在 int* newScores=new int[newSize1];
表达式中做了。
您可以使用 std::vector<int>
来避免麻烦。它会在您向其中插入元素时自动调整自身大小(push_back
),您不必担心自己释放内存。
删除此行
newScores[j]=new int;
您不需要再次为您的动态数组分配 new int。此外,使用动态数组
时需要使用delete[]删除内存
我有一个数组,其大小在运行时确定。
cout<<"Enter size of array: ";
cin>>size1;
int* scores=new int[size1];
然后我填写这个分数数组。现在我想增加它的大小。我创建了一个新的动态数组。
int* newScores=new int[newSize1];
such that `newSize1 > Size1
现在我将旧乐谱的内容复制到新乐谱中:
for(int i=0; i<Size1;i++)
{newScores[i] = scores[i];
}
现在我必须要求 newScores 的剩余元素添加到它。 我做到了:
for(int j=size1;j<newSize1;j++)
{
newScores[j]=new int;
cout<<"Enter new score: ";
cin>>newScores[j];
}
编译时出现上述错误:
error: invalid conversion from ‘int*’ to ‘int’ [-fpermissive]
newScores[size1]=new int;
newScores[j]=new int;
是一个错误,没有必要。 newscores[j]
是一个 lvlalue int
,而 new int
returns int*
。但是你已经不需要分配它了——你在 int* newScores=new int[newSize1];
表达式中做了。
您可以使用 std::vector<int>
来避免麻烦。它会在您向其中插入元素时自动调整自身大小(push_back
),您不必担心自己释放内存。
删除此行
newScores[j]=new int;
您不需要再次为您的动态数组分配 new int。此外,使用动态数组
时需要使用delete[]删除内存