有没有实现按键删除并同时获取值? [复制]

2024-02-16

我正在做一个性能关键的程序(一些学术性的东西),我希望尽可能地优化(不像它证明的“这是”瓶颈)。

我有一个自定义字典结构(.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(使用前将#替换为@)

有没有实现按键删除并同时获取值? [复制] 的相关文章

随机推荐