我正在做一个性能关键的程序(很少的学术内容),并且我希望尽可能地进行优化(不像它证明“这是”瓶颈)。
我有一个自定义字典结构(围绕 .NET 的包装器Dictionary<,>
),我会不断地在一个阶段删除项目(按Key
值)。我需要Value
删除的项目。现在我必须这样做:
T t;
if !TryGet(key, out t)
return false;
Remove(key);
这是两个查找。我会喜欢这个:
public bool Remove(S key, out T value)
{
// implementation
}
我知道框架中什么都没有,但是某处有实现吗?如果是这样,我会用那个来改变我的支持字典。
编辑:嗯,我都知道TryGetValue
并且Remove
是 O(1)。只知道是否有任何集合结构可以在一次查找中产生相同的效果。正如我所说,我正在尝试尽可能优化。只是知道。