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

How do I create a new array and copy the last elements of the old array into the new array while the new array is smaller?

本文关键字:数组 新数组 元素 最后一个 复制 创建 小时      更新时间:2023-10-16

标题解释了我的问题,但我会更深入地解释。这是我的数组初始值设定项,它只创建一个默认值从 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;
}

对我有用

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