我有一个定义为
的结构struct Point {
int x, int y
}
我得到一个传入函数的Points数组,以及一个告诉我数组包含多少元素的整数i。我怎么能在数组中添加一个元素呢?我意识到没有方法只添加新元素,因为数组不能动态调整大小,所以我需要创建一个新元素并复制每个元素...但是当我尝试执行以下操作时:
Point newPoints[i+1];
我被告知它期望一个恒定的值,当然我不能给它,因为我需要i + 1,而且我是可变的。 C ++让我难过。 (如果不是很明显,我来自一个神圣的人为你管理所有物品的土地......)
P.S。我必须使用数组...忘了提及。
答案 0 :(得分:2)
在标准C ++中,您无法创建具有运行时设置大小的数组。您需要执行以下操作之一:
newPoints
声明为指针,然后使用new Point[i+1]
分配值,稍后再应用delete []
。newPoints
之类的内容声明boost::scoped_array
,自动管理清理。std::vector
;您可以使用&v[0]
从中获取指针。答案 1 :(得分:0)
害怕你不得不在这个上使用new / malloc。我只是在运行时确定,因此在编译时它无法静态分配堆栈所需的内存。
答案 2 :(得分:0)
必须使用常量值的原因是正在堆栈上创建newPoints
数组,为此,编译器必须知道它在编译时的大小。为了能够指定动态大小,您必须使用new []和delete [],或动态数据结构类(例如来自STL)。