在 C# 字典中仅进行一次查找即可查找或插入

2023-11-25

我是一名前 C++/STL 程序员,尝试使用 C#/.NET 技术编写快速行进算法......

我正在寻找 STL 的等效方法map::insert如果给定键不存在,则在给定键处插入值,否则返回现有键值对的迭代器。

我发现的唯一方法是通过两次查找来实现这一点:一次在内部TryGetValue和另一个在Add method:

List<Point> list;
if (!_dictionary.TryGetValue (pcost, out list))
{
    list = new List<Point>();
    dictionary.Add (pcost, list);
}
list.Add(new Point { X = n.x, Y = n.y });

有什么可以解释为什么使用 .NET 容器无法实现这一点吗?还是我错过了一些要点?


您可以通过以下方式分配您的值:

var dict = new Dictionary<int, int>();
dict[2] = 11;

如果键 2 的值不存在 - 它将被添加,否则它将被覆盖。

Dictionary 没有方法 GetOrAdd,但 C# 4.0 中的 ConcurrentDictionary 有:

var dict = new ConcurrentDictionary<int, int>();
dict[2] = 10;
int a = dict.GetOrAdd(2, 11);// a == 10
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 字典中仅进行一次查找即可查找或插入 的相关文章

随机推荐