c# - 是否有任何实现可以通过键删除并同时获取值?

标签 c# .net dictionary asymptotic-complexity trygetvalue

<分区>

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

我有一个自定义字典结构(围绕 .NET Dictionary<,> 的包装器),我会不断地在一个阶段删除项目(按 Key 值)。我需要 Value删除的项目。现在我必须做的:

T t;
if !TryGet(key, out t)
   return false;

Remove(key);

这是两次查找。我会喜欢这个:

public bool Remove(S key, out T value)
{
    // implementation
}

我知道框架中没有任何内容,但是在某处有实现吗?如果是这样,我会用那个改变我的支持字典。

编辑:嗯我都知道TryGetValueRemove是 O(1)。只知道是否有任何集合结构可以在一次查找中产生相同的效果。正如我所说,我正在尝试尽可能地优化。刚知道。

最佳答案

Dictionary<TKey, TValue>.TryGetValue Dictionary<TKey, TValue>.Remove 方法都是 O(1) 操作,所以我认为您不应该关心这里的性能。

关于c# - 是否有任何实现可以通过键删除并同时获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15785091/

相关文章:

c# - List<string> 的对象如何添加提供的字符串

c# - Tidy.NET 和 html 实体

python访问字典中字典中的元素

javascript - 我正在尝试读取 plist 版本中的 .strings 文件。我有 <key> 和 <string>。我不知道如何在我的 javascript 代码中读取这些输入。

c# - 如何从通用 DocumentDBRepository 中的 DocumentDB 文档模型读取类型名称?

c# - 将页面呈现为图片

c# - 检查密码字段是否为空

.net - 有人知道可能存在的任何 .NET OpenID Provider 示例代码吗?

python - python字典的奇怪行为

c# - 在路由属性中添加默认操作