[英]Increase array size at runtime in c++ without vector, pointer [closed]
我已经在C ++中声明了一些int数组。 说,int a [6]
在运行时,如果我的数组大小超过6,那么我需要增加它。
我不会使用指针,向量,并且大小不会由用户给出。
C数组在编译时静态解析,因此无法在运行时调整大小。
如果您不想使用std::vector
, malloc
或new
,则还有另一种选择:声明一个“足够大”的数组,然后在另一个变量中保留使用的元素数。 例如:
int a[big_enough];
size_t a_size = 0;
但是我的建议绝对是使用std::vector
! 例如:
std::vector<int> a(6);
初始化一个等于0
的6 int
的向量。
如果您需要更改其值,可以通过以下方式访问它们
a[i] = 3;
其中i
是0
到5
之间的整数(即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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.