我在想動態數組是D中的向量的替代品,但它似乎沒有刪除函數(只有關聯數組),這是一個矢量的限制,所以我想知道如果我有這個權利。如果有一個數組一樣如下,D中的向量和動態數組
uint[] a;
a.length = 3;
a[0] = 1;
a[1] = 2;
a[2] = 3;
然後我發現的唯一方法刪除,也就是說,第二個因素是,
a = a[0..1] ~ a[2];
但是,這似乎並沒有權利(但也許只是因爲我現在還不明白這一點)。那麼有沒有一個矢量,並有另一種從動態數組中刪除元素的方法?
謝謝。
真實,雖然陣很可能是,如果你真正尋找的是一個矢量更好,因爲數組沒有每次添加的時間來調整其內部數組或刪除任何東西到/它。 – 2010-10-11 07:09:56
@Jonathan:你知道這是否是語言規範的要求,還是它的實現定義?即編譯器是否可以像'std.container.Array'一樣實現內置數組? – 2010-10-11 07:38:52
我不知道具體要求是什麼。編譯器有一些餘地,但我非常懷疑它會(並且我認爲它不應該)在一般情況下分配它需要的內存的兩倍。數組確實有一個容量屬性,告訴你可以在需要重新分配之前添加多少個元素,如果你玩弄它,你會發現它確實在那裏保留了一些額外的內存,但它可以被證明是如果它試圖保持像Array那樣多的額外內存,那麼它會佔用內存。 http://www.digitalmars.com/d/2.0/arrays.html – 2010-10-11 16:52:53