在没有向量、指针的情况下,在c++中的运行时增加数组大小
Increase array size at runtime in c++ without vector, pointer
我在c++中声明了一个具有一定大小的int数组。比如说,在[6]中
在运行时,如果我的数组大小超过6,那么我需要增加它。
我不会使用指针,矢量和大小将不会由用户给出。
C数组在编译时静态解析,因此在运行时无法调整大小。
如果您不想使用std::vector
、malloc
或new
,还有另一个选项:声明一个"足够大"的数组,然后在另一个变量中保留已使用元素的数量。例如:
int a[big_enough];
size_t a_size = 0;
但我的建议绝对是使用std::vector
!例如:
std::vector<int> a(6);
初始化等于CCD_ 6的6个CCD_。
如果你需要更改它们的价值,你可以使用访问它们
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
相关文章:
- CMake-按正确顺序将项目与C运行时对象文件链接
- 我在c++代码中生成了一个运行时#3异常
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 删除指向指针的指针是运行时错误吗
- 如何用参数值调用函数(仅在运行时已知)
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- c++中的指针和运行时错误
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- 有没有一种方法可以测量c++程序的运行时内存使用情况
- 建议在运行时将带有类实例的列表从c++导入qml
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 如何在GTK程序运行时禁用屏幕保护程序/电源管理/屏幕消隐
- 在同一模拟中使用静脉和静脉_ inet内容时出现运行时错误
- 读取文件时运行时的未知行为
- 在不使用容器或字符串库的情况下,在运行时增加动态数组大小
- 如何让变量在每次运行时增加 "return main();"
- 为什么未达到的 try-catch 块会增加运行时时间
- 在visual studio C++中,有没有任何方法可以在运行时增加堆栈保留大小
- 如何在运行时增加结构数组的大小