从关联数组中删除任何元素

时间:2013-04-10 20:09:16

标签: associative-array d

我想从关联数组中删除(y)元素并对其进行处理。 目前我正在使用RedBlackTree.removeAny(),但我不需要数据按任何顺序排列。我可能在AA上使用.byKey(),但这总是产生一个包含所有键的数组。我一次只需要一个,并且在处理所有其他元素时可能会改变AA。有没有其他智能方法可以在没有(内部)遍历整个数据结构的情况下获得一个密钥?

1 个答案:

答案 0 :(得分:2)

有一种解决方法,与使用.byKeys()

一样有效
auto anyKey(K, V)(inout ref V[K] aa)
{
    foreach (K k, ref inout(V) v; aa)
        return k;
    assert(0, "Associative array hasn't any keys.");
}

根据我的需要,.byKeys().front似乎足够快。不确定解决方法是否实际上更快。