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

时间:2015-03-19 12:12:26

标签: c++ c arrays malloc dynamic-allocation

我已经在c ++中使用一些大小声明了一个int数组。 比如说,int [6]

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

我不打算使用指针,矢量,用户不会给出尺寸。

2 个答案:

答案 0 :(得分:3)

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

如果您不想使用std::vectormallocnew,还有另一种选择:声明一个"足够大"然后在另一个变量中保存已使用元素的数量。 E.g:

int a[big_enough];
size_t a_size = 0;

但我的建议绝对是使用std::vector! E.g:

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

初始化6 int s的向量,等于0

如果您需要更改其值,可以使用

访问它们
a[i] = 3;

其中i05之间的整数(即a.size())。

顺便说一句,通常你不想明确设置矢量大小。将其声明为空,然后逐个添加元素。 E.g:

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

答案 1 :(得分:1)

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

这样的事情:

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

最好使用std::vector

相关问题