的只有第一个元素是有可能做这样的事情:删除阵列
int *iarray = new int[10];
.....
//do something with it
.....
,然后以轻松去除第一要素做到这一点:
delete iarray;
iarray++;
似乎删除(不[])仍然删除整个数组。 如果可能的话,这将是非常棘手和聪明的方式来删除第一个元素。 这个想法不是我的,我在某处看到它,但它不适用于我。难道我做错了什么?
的只有第一个元素是有可能做这样的事情:删除阵列
int *iarray = new int[10];
.....
//do something with it
.....
,然后以轻松去除第一要素做到这一点:
delete iarray;
iarray++;
似乎删除(不[])仍然删除整个数组。 如果可能的话,这将是非常棘手和聪明的方式来删除第一个元素。 这个想法不是我的,我在某处看到它,但它不适用于我。难道我做错了什么?
它看起来像你正在写C++,在这种情况下delete
技巧是疯狂和可怕的,并不会工作。你当然可以只是得到一个指针第二个元素,如果这是你真正需要做指针数学,但实际上删除第一个项目,你将不得不将所有的东西都移回去。
使用deque从前面删除一个元素 - 这就是这个结构的发明。
谢谢我现在明白了。看起来,在Linux中,数组的大小在自己排列之前并不保留四个字节(当使用new []时)。我会搜索这个问题的答案,但如果你知道某个链接,我会非常感谢你,如果你发布它。 – Marko