【发布时间】:2020-11-05 17:47:37
【问题描述】:
我有一个像这样动态分配的数组:a[1,2,3,*unallocated value*],它有 4 个元素。我还有一个length 变量,我可以从中知道它有多长。
我想删除此数组中的最后一个元素并将其设置为未分配或以某种方式取消初始化。
我认为这样的事情可能会起作用a[lenght-1]=*something-something*,但我不知道最后该放什么。有没有办法可以取消分配单个元素?还是我必须创建一个新数组并将除最后一个之外的所有元素复制到其中?
提前致谢。
【问题讨论】:
-
为什么不使用
std::vector?您可以为 4 个整数分配空间,但向量中只有三个,直到您准备好添加第四个元素。举例说明您为何需要此功能可能会为您提供更好的帮助/答案。 -
我还建议为此使用 std::vector。这将是:
std::vector<int> a {1, 2, 3};使用三个元素创建它,a.push_back(4)向其中添加4,a.pop_back()释放最后一个元素,a.size()为其当前大小。 -
如果你想坚持使用数组(我不推荐),我相信你必须创建一个新数组并将除最后一个之外的所有元素复制到其中(这可以忽略不计的性能提升,最好只使用向量或减小大小变量)。
-
@ColonD 这是一个学校练习,我们还没有研究矢量,所以如果我这样做,他们可能不会接受它。但是谢谢你的建议。 :)