C ++如何在不丢失数据的情况下调整动态数组的大小?

时间:2013-12-07 00:29:20

标签: c++ pointers dynamic-arrays

我需要调整动态数组的大小而不会丢失数据。

像这样:

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];
}

2 个答案:

答案 0 :(得分:3)

  1. 使用新的所需大小创建一个新的空数组。
  2. 将旧数组中的所有内容复制到新数组中。
  3. 删除旧数组。
  4. 将旧数组的指针指定给新数组的地址。

  5. 或使用vector

答案 1 :(得分:0)

正如nhgrif所提到的,你需要复制数组。

如果您可以使用malloc进行内存分配,还有另一种方法,那么您可以使用realloc来调整数组大小。

其他人建议使用std::vectorlist更好的方法。