仅删除数组的第一个元素

时间:2012-12-03 21:42:35

标签: c++ arrays delete-operator

是否可以做这样的事情:

int *iarray = new int[10];
.....
//do something with it
.....

然后为了轻松删除第一个元素,请执行以下操作:

delete iarray;
iarray++;

似乎删除(没有[])仍然删除整个数组。 如果可能的话,删除第一个元素将是非常棘手和聪明的方法。 这个想法不是我的,我在某个地方看到了它,但这对我不起作用。难道我做错了什么?

3 个答案:

答案 0 :(得分:4)

使用deque从前面删除元素 - 这就是这个结构的发明。

答案 1 :(得分:2)

看起来你正在编写C ++,在这种情况下,delete技巧是疯狂而可怕而且不会起作用。你当然可以获取第二个元素的指针,如果这是你通过指针数学真正需要的东西,但实际上删除了你要将所有东西一个一个地移回的第一个项目。 / p>

答案 2 :(得分:1)

这不会像你期望的那样有效。

在这里查看这个答案:

How does delete[] know it's an array?

它几乎可以回答你的问题。