我正在做一个性能关键的程序(一些学术性的东西),我希望尽可能地优化(不像它证明的“这是”瓶颈)。
我有一个自定义字典结构(.NET 的包装器Dictionary<,>
)并且我会在一个阶段不断地删除项目(通过Key
价值)。我需要Value
已删除的项目。现在我要做的就是:
T t;
if !TryGet(key, out t)
return false;
Remove(key);
这是两次查找。我会喜欢这个:
public bool Remove(S key, out T value)
{
// implementation
}
我知道框架中没有任何内容,但是在某处有实现吗?如果是这样,我会用那个字典更改我的支持字典。
Edit:嗯我都知道TryGetValue
and Remove
是 O(1)。只需知道是否有任何集合结构可以在一次查找中产生相同的效果。正如我所说,我正在尝试尽可能优化。只是知道而已。
The 并发词典 https://msdn.microsoft.com/en-us/library/dd287129(v=vs.110).aspx has a TryRemove
执行此操作的方法。它的工作原理就像TryGet
但它也会删除该元素。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)