4
我想从关联数组中移除(y)元素并对其进行处理。 目前我使用的是RedBlackTree
以及.removeAny()
,但我不需要按任何顺序输入数据。 I 可能在AA上使用.byKey()
,但是它总是会生成一个包含所有密钥的数组。我一次只需要一个,在处理其他元素时可能会改变AA。如果没有(内部)遍历整个数据结构,是否有其他聪明的方法可以准确地获得一个密钥?删除关联数组中的任何元素
我想从关联数组中移除(y)元素并对其进行处理。 目前我使用的是RedBlackTree
以及.removeAny()
,但我不需要按任何顺序输入数据。 I 可能在AA上使用.byKey()
,但是它总是会生成一个包含所有密钥的数组。我一次只需要一个,在处理其他元素时可能会改变AA。如果没有(内部)遍历整个数据结构,是否有其他聪明的方法可以准确地获得一个密钥?删除关联数组中的任何元素
有一种变通方法,它的工作原理以及使用.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
似乎是足够快,但。不知道该解决方案实际上是否更快。
是不是byKey懒? – dav1d 2013-04-10 20:13:35
我不这么认为。如果http://github.com/D-Programming-Language/druntime/blob/master/src/rt/aaA.d#L519是Keke在内部实现的方式,那么没有。 – 2013-04-10 20:16:39
有趣的是,新机管局实施的时间(它在工作中,但似乎已经死了?) – dav1d 2013-04-10 20:17:51