【发布时间】:2014-05-10 22:31:30
【问题描述】:
我有一个动态数组作为我班级的成员。我正在尝试找到一种有效的方法来调整它的大小并保留其中的所有信息。我知道向量可以很好地解决这个问题,但我想用动态数组来代替。
我的班级有一个名为 data 的 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;
或者我应该以不同的方式来做这件事吗?有什么建议吗?
编辑
修复了我的示例中的一个错误并将 char 更改为 unsigned _int8。
编辑 2
如果有的话,我不会经常重新分配。我希望该功能能够避免必须编写代码来创建新对象并在需要时复制所有内容。
我正在编写的类是用于创建和保存位图 (.bmp) 图像。该数组仅保存文件字节。创建对象时(应该)知道图像大小。
【问题讨论】:
-
您似乎正在尝试重新实现
std::vector。只需使用std::vector。 -
附带说明...
std::copy -
您在第二个循环中缺少
; ++i;) -
如果您真的不想使用 std::vector 或等价物,那么也许您可以退回到 C,尤其是考虑到这是一个简单的 char 数组。对原始 char 数组使用 malloc(),然后在需要调整其大小时使用 realloc()。
标签: c++ dynamic-arrays