2012-12-03 229 views
2

的只有第一個元素是有可能做這樣的事情:刪除陣列

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

,然後以輕鬆去除第一要素做到這一點:

delete iarray; 
iarray++; 

似乎刪除(不[])仍然刪除整個數組。 如果可能的話,這將是非常棘手和聰明的方式來刪除第一個元素。 這個想法不是我的,我在某處看到它,但它不適用於我。難道我做錯了什麼?

回答

1

這將無法按預期工作。

退房這裏這樣的回答:

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

它幾乎回答你的問題。

+0

謝謝我現在明白了。看起來,在Linux中,數組的大小在自己排列之前並不保留四個字節(當使用new []時)。我會搜索這個問題的答案,但如果你知道某個鏈接,我會非常感謝你,如果你發佈它。 – Marko

2

它看起來像你正在寫C++,在這種情況下delete技巧是瘋狂和可怕的,並不會工作。你當然可以只是得到一個指針第二個元素,如果這是你真正需要做指針數學,但實際上刪除第一個項目,你將不得不將所有的東西都移回去。

4

使用deque從前面刪除一個元素 - 這就是這個結構的發明。