我一直在尝试制作一个程序,添加2个不同大小的数组.但我想知道动态增加阵列大小容量?例如:array [4]然后将大小升级为2来制作数组[6] ;? 编辑:没有使用矢量
我尝试创建一个新的ptr但它不起作用.我收到错误:只读变量不可分配.
int *ptr2 = new int[a2.size];
// new ptr2 copies ptr1
for (int i=0; i<(a1.size); i++) {
ptr2[i] = a1.ptr[i];
}
// we want ptr1 to point to ptr2
for (int i=0; i<(a2.size); i++) {
ptr2[i] += a2.ptr[i];
}
delete [] a1.ptr;
a1.ptr=ptr2;
Run Code Online (Sandbox Code Playgroud)
Dav*_*rtz 15
您无法更改阵列的大小,但您不需要.您可以只分配一个更大的新数组,复制要保留的值,删除原始数组,并将成员变量更改为指向新数组.
分配一个new []数组并将其存储在临时指针中.
复制您要保留的先前值.
删除[]旧数组.
更改成员变量,ptr并size指向新数组并保持新大小.
小智 9
int* newArr = new int[new_size];
std::copy(oldArr, oldArr + std::min(old_size, new_size), newArr);
delete[] oldArr;
oldArr = newArr;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71660 次 |
| 最近记录: |