从动态数组复制到c ++中的另一个动态数组fpermissive

时间:2016-10-15 20:11:57

标签: c++ arrays dynamic-memory-allocation

我有一个数组,其大小在运行时确定。

cout<<"Enter size of array: ";
cin>>size1;
int* scores=new int[size1];

然后我填写这个数组分数。现在我想增加它的大小。我创建了一个新的动态数组。

int* newScores=new int[newSize1];  
such that `newSize1 > Size1

现在我将旧分数的内容复制到newScores:

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;

3 个答案:

答案 0 :(得分:4)

newScores[j]=new int;是一个错误,没有必要。 newscores[j]是一个lvlalue int,而new int返回int*。但是你已经没有必要分配它了 - 你是在int* newScores=new int[newSize1];表达式中完成的。

使用std::vector<int>可以避免麻烦。当您将元素插入其中时,它会自动调整大小(使用push_back),您不必担心自己释放内存。

答案 1 :(得分:0)

删除此行

newScores[j]=new int;

答案 2 :(得分:0)

您无需再次为动态数组指定新的int。此外,使用动态数组

时,需要使用delete []删除内存