我有一个动态数组作为我的班级的一员。我试图找到一种有效的方式来调整它的大小,并保留所有的信息。我知道矢量可以很好地工作,但我想用动态数组来代替。高效调整动态数组的大小
我的班级有一个动态数组类型unsigned _int8被称为数据。
以下可以接受吗?
unsigned _int8 * temp = data;
data = new unsigned _int8[NewSize]();
if(OldSize >= NewSize)
{
for(int i = 0; i < NewSize; i++)
data[i] = temp[i];
}
else
{
for(int i = 0; i < OldSize; i++)
data[i] = temp[i];
}
delete [] temp;
或者我应该以不同的方式做到这一点?有什么建议么?
编辑
固定在我的例子错误,并改变焦炭为unsigned _int8。
编辑2
我不会经常重新分配,如果在所有。我希望功能在那里,以避免编写代码来创建新对象,并在需要时复制所有内容。
我写的课程是用于创建和保存位图(.bmp)图像。该数组只是保存文件字节。创建对象时,图像大小将(应该)已知。
看起来你试图重新实现'std :: vector'。只需使用'std :: vector'。 – juanchopanza
在旁边注释...'std :: copy' –
你错过了一个'; ++ i'在你的第二个循环中;) – Mahrgell