是否有任何实现按键删除并同时获取值?
我正在做一个性能关键的程序(很少的学术内容),我正在寻求尽可能优化(不像它certificate“这是”瓶颈)。
我有一个自定义字典结构(.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)。 只知道是否有任何集合结构只能在一次查找中产生相同的效果。 正如我所说,我正在努力尽可能地优化。 只是知道。
Copenehagen大学的通用集合库有一个Dictionary.Remove()
方法,看起来可以做你想要的:
bool删除(K k,out V v)
如果字典包含其键等于k的条目,则返回true,如果是,则删除该条目并将关联的值分配给v; 否则返回false并将T的默认值赋给v。
我自己没有使用过这个库,但是我已经在Stack Overflow上看过它了几次。 根据MIT风格的许可 ,它可以免费使用。
Dictionary
和Dictionary
方法都是O(1)操作,所以我认为你不应该关注这里的性能。
ConcurrentDictionary有一个TryRemove
方法来执行此操作。 它就像TryGet
一样TryGet
但它也删除了元素。
上述就是C#学习教程:是否有任何实现按键删除并同时获取值?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/952152.html