我是一名学生,正在编写一种方法,该方法在 C++ 中从整数数组的末尾删除零。该数组在一个结构中,并且该结构还有一个 int 来跟踪数组的长度。
该方法从最后一个元素开始检查每个元素,直到遇到第一个非零元素,并通过更改长度值将其标记为“最后一个元素”。然后该方法返回到原始的“最后一个元素”,删除那些未超出范围的元素(零)。
如果数组的更新长度大于数组的更新长度,则删除i
数组中第 th 个元素的部分,如下所示:i
if (i > p->length - 1) {
delete (p->elems + i); // free ith elem
不过,那条线是错误的。删除需要一个指针,是吗?所以我的感觉是我需要恢复指向数组的指针,然后添加i
到它,这样我就会有我要删除的整数的内存位置。
我的直觉错了吗?错误很微妙吗?或者,我有完全错误的想法吗?我开始怀疑:我真的需要释放这些原语吗?如果它们不是我需要的原语,在这种情况下,我会怎么做?