在没有向量、指针的情况下,在c++中的运行时增加数组大小

Increase array size at runtime in c++ without vector, pointer

本文关键字:增加 运行时 增加数 数组 向量 情况下 指针 c++      更新时间:2023-10-16

我在c++中声明了一个具有一定大小的int数组。比如说,在[6]中

在运行时,如果我的数组大小超过6,那么我需要增加它。

我不会使用指针,矢量和大小将不会由用户给出。

C数组在编译时静态解析,因此在运行时无法调整大小。

如果您不想使用std::vectormallocnew,还有另一个选项:声明一个"足够大"的数组,然后在另一个变量中保留已使用元素的数量。例如:

int a[big_enough];
size_t a_size = 0;

但我的建议绝对是使用std::vector!例如:

std::vector<int> a(6);

初始化等于CCD_ 6的6个CCD_。

如果你需要更改它们的价值,你可以使用访问它们

a[i] = 3;

其中i是介于05之间的整数(即a.size())。

顺便说一句,通常你不想显式地设置向量大小。将其声明为空,然后逐个添加元素。例如:

std::vector<int> a;
a.push_back(-3);

您不能在运行时更改数组的大小。另一种选择是创建一个比现有阵列更大的新阵列。将现有阵列的元素复制到新阵列,然后删除现有阵列。并更改成员变量ptr和大小。

类似这样的东西:

int* newArray = new int[sizeOfArray];
std::copy(oldArray, oldArray + std::min(sizeofOldArray, sizeOfArray), newArray);
delete[] oldArray;
oldArray = newArray;

最好的方法是使用std::vector