我在想动态数组是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