如何创建一个新数组,并在新数组较小时将旧数组的最后一个元素复制到新数组中?

时间:2018-09-22 17:09:14

标签: c++ arrays

标题说明了我的问题,但我将更深入地说明。这是我的数组初始化程序,它只会创建一个默认值从0到i + 1的数组。

void initialize(double *a, unsigned size) {
    int val = 0;
    for (unsigned i = 0; i < size; i++) {
        val = i+1;
        a[i] = val;
    }
}

这是我的实际问题所在。当新数组的大小较大时,我想出了如何将旧数组的元素复制到一个新数组中,但是我似乎无法弄清楚如何将旧数组的最后一个元素复制到一个较小的新数组中。 else if语句是我在检查数组大小后要执行的操作,而我现在所拥有的不起作用。

void resize(double *&a, int oldSize, int newSize) {
    double *a1 = new double[newSize]();
    if (newSize > oldSize) {
        for (unsigned i = 0; i < oldSize; i++) {
            a1[i] = a[i];
        }
    }
    else if(oldSize > newSize) {
        for (unsigned i = 0; i < newSize; i++)
        {
        a1[i] = a[oldSize - newSize + i];
        }
    }

    delete [] a;
    a = a1;
}

1 个答案:

答案 0 :(得分:1)

为我工作

void resize(double *&a, int oldSize, int newSize) {
    double *a1 = new double[newSize]();
    if (newSize > oldSize) {
        for (unsigned i = 0; i < oldSize; i++) {
            a1[i] = a[i];
        }
    }
    else if(oldSize > newSize) {
        for (unsigned i = 0; i < newSize; i++)
        {
        a1[i] = a[oldSize - newSize+i];
        }
    }

    delete [] a;
    a = a1;
}

第25个尺寸;最后10个元素;

  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

     

16 17 18 19 20 21 22 23 24 25