C++如何在不丢失数据的情况下调整动态数组的大小
C++ How to resize a dynamic array without losing data?
我需要在不丢失数据的情况下调整动态数组的大小。
像这样:
double * pVecDin;//POINTER
int num_values = 2;
pVecDin = new double[num_values];
pVecDin[0]=5;
pVecDin[1]=6;
int new_num_values=4;
pVecDin = new double[new_num_values];
//Next I lost value of pVecDin[0] and pVecDin[1]
pVecDin[2]=8;
pVecDin[3]=9;
我需要制作一个Auxiliar Dynamic Array
来复制旧值吗
类似:
int new_num_values=4;
double * pVecDin_aux; //POINTER
pVecDin_aux = new double[new_num_values];
pVecDin_aux = pVecDin;
for(int i=0; i < n; i++)
{
pVecDin_aux[i] = pVecDin[i];
}
- 使用新的所需大小创建一个新的空数组
- 将旧数组中的所有内容复制到新数组中
- 删除旧数组
- 将旧数组的指针分配给新数组的地址
或者使用vector
。
正如nhgrif所提到的,您需要制作数组的副本。
还有另一种方法,如果可以使用malloc
进行内存分配,那么可以使用realloc
来调整阵列的大小。
如其他同类建议的那样,有更好的方法来使用std::vector
或list
。
相关文章:
- 在没有太多条件句的情况下,我如何避免被零除
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 在未初始化映射的情况下,将值插入到映射的映射中
- 是默认情况下分配给char数组常量的值
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在已经使用Git的情况下减少编译时间
- 调整向量大小并检索值,这是否正确或在任何情况下都可能导致段错误?
- 在不破坏元素的情况下调整std::vector的大小
- C++在没有STL的情况下调整指针数组的大小(向量..)
- C++如何在不丢失数据的情况下调整动态数组的大小
- 我可以在不手动调整Qt大小的情况下调用调整大小事件吗?
- 是否可以在不使指针无效的情况下调整/重新分配大块内存
- 如何在不影响 ALT+F4 或在任务栏中关闭窗口的情况下重新调整窗口关闭按钮的用途?
- 如何在不损失c ++或opencv图像质量的情况下调整图像大小
- 在不初始化数据的情况下调整 std::vector C++的大小<char>
- 如何在不丢失现有数据的情况下调整std::vector的大小
- 如何调整这些函数,使其即使在值范围的极端情况下也能工作?(反向LOG)
- std::在没有提供副本的情况下,使用不安全的移动调整矢量大小
- 在不调用构造函数的情况下调整c++向量的大小