在没有矢量,指针的情况下在c ++中在运行时增加数组大小
Increase array size at runtime in c++ without vector, pointer
我已经在 C++ 中声明了一个具有一定大小的 int 数组。
比如说,int a[6]
在运行时,如果我的数组大小超过 6,那么我需要增加它。
我不会使用指针,向量,用户不会给出大小。
C 数组在编译时静态解析,因此无法在运行时调整大小。
如果你不想使用std::vector
、malloc
或new
,还有另一种选择:声明一个"big-enough"数组,然后保存在另一个变量中使用的元素。例如:
int a[big_enough];
size_t a_size = 0;
但是我的建议肯定是用std::vector
!例如:
std::vector<int> a(6);
初始化一个6int
s的向量等于0
.
如果您需要更改它们的值,可以使用
访问它们
a[i] = 3;
其中 i
是 0
和 5
之间的整数(即 a.size()
)。
顺便说一下,您通常不想显式设置矢量大小。声明为空,然后一个一个添加元素。例如:
std::vector<int> a;
a.push_back(-3);
您无法在 运行 时更改数组的大小。另一种方法是创建一个比现有数组更大的新数组。将现有数组的元素复制到新数组并删除现有数组。并更改成员变量,ptr和size。
像这样:
int* newArray = new int[sizeOfArray];
std::copy(oldArray, oldArray + std::min(sizeofOldArray, sizeOfArray), newArray);
delete[] oldArray;
oldArray = newArray;
最好是使用std::vector
我已经在 C++ 中声明了一个具有一定大小的 int 数组。 比如说,int a[6]
在运行时,如果我的数组大小超过 6,那么我需要增加它。
我不会使用指针,向量,用户不会给出大小。
C 数组在编译时静态解析,因此无法在运行时调整大小。
如果你不想使用std::vector
、malloc
或new
,还有另一种选择:声明一个"big-enough"数组,然后保存在另一个变量中使用的元素。例如:
int a[big_enough];
size_t a_size = 0;
但是我的建议肯定是用std::vector
!例如:
std::vector<int> a(6);
初始化一个6int
s的向量等于0
.
如果您需要更改它们的值,可以使用
访问它们a[i] = 3;
其中 i
是 0
和 5
之间的整数(即 a.size()
)。
顺便说一下,您通常不想显式设置矢量大小。声明为空,然后一个一个添加元素。例如:
std::vector<int> a;
a.push_back(-3);
您无法在 运行 时更改数组的大小。另一种方法是创建一个比现有数组更大的新数组。将现有数组的元素复制到新数组并删除现有数组。并更改成员变量,ptr和size。
像这样:
int* newArray = new int[sizeOfArray];
std::copy(oldArray, oldArray + std::min(sizeofOldArray, sizeOfArray), newArray);
delete[] oldArray;
oldArray = newArray;
最好是使用std::vector