仅删除数组的第一个元素

4

是否可以像这样做:

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

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

delete iarray;
iarray++;

看起来 delete(不带 [] )仍然会删除整个数组。 如果可能的话,这将是一种非常棘手和聪明的方法来移除第一个元素。 这个想法不是我自己的,我在某个地方看到过,但它对我不起作用。我做错了什么吗?


当我刚开始学习C++时,我曾经问过这个问题。现在看来很愚蠢。Delete不能删除元素,只能删除整个数组。要从开头删除元素,您应该根据用例使用不同的数据结构。 - Marko
3个回答

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

2

看起来你在写C++代码,如果是的话,使用delete技巧可能会很糟糕,也不会起作用。如果你真的需要获取第二个元素的指针,可以通过指针运算来实现,但是要删除第一个元素,你必须把其他所有元素都向前移动一位。


1

谢谢,我现在明白了。在Linux中,数组的大小不是在数组本身之前保留四个字节(当使用new[]时)。我会寻找答案,但如果您知道一些链接,如果您发布它,我将非常感激。 - Marko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接