的只有第一個元素是有可能做這樣的事情:刪除陣列
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