D中的向量和动态数组

tjm*_*tjm 7 arrays d vector

我认为动态数组是D中向量的替代,但似乎它们没有删除函数(只有关联数组才有),这对于向量来说是一个限制,所以我想知道我是否已经做到了.如果有一个如下的数组,

uint[] a;
a.length = 3;
a[0] = 1;
a[1] = 2;
a[2] = 3;
Run Code Online (Sandbox Code Playgroud)

然后,我发现删除第二个元素的唯一方法是,

a = a[0..1] ~ a[2];
Run Code Online (Sandbox Code Playgroud)

但这似乎并不正确(但也许只是因为我还没有理解这一点).那么有一个向量,还有另一种从动态数组中删除元素的方法吗?

谢谢.

dsi*_*cha 6

您可以使用std.algorithm.remove(),它不仅适用于数组,而且适用于通用范围.例:

import std.algorithm;

void main() {
    uint[] a = [1, 2, 3];
    a = a.remove(1);
    assert(a == [1, 3]);
}
Run Code Online (Sandbox Code Playgroud)