如何动态增加数组大小?

EEs*_*tud 7 c++

我一直在尝试制作一个程序,添加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

您无法更改阵列的大小,但您不需要.您可以只分配一个更大的新数组,复制要保留的值,删除原始数组,并将成员变量更改为指向新数组.

  1. 分配一个new []数组并将其存储在临时指针中.

  2. 复制您要保留的先前值.

  3. 删除[]旧数组.

  4. 更改成员变量,ptr并size指向新数组并保持新大小.

  • 你不能在用`new []`分配的块上使用`realloc`. (4认同)
  • 或者只使用`realloc` (2认同)

小智 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)