【问题标题】:Removing any element from an associative array从关联数组中删除任何元素
【发布时间】:2013-04-10 20:09:15
【问题描述】:

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

【问题讨论】:

标签: associative-array d


【解决方案1】:

有一种解决方法,它与使用.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 似乎已经足够快了。不确定解决方法是否真的更快。

【讨论】:

    猜你喜欢
    • 2017-01-14
    • 2011-07-23
    • 2011-12-31
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    相关资源
    最近更新 更多