首页 > 解决方案 > 在 C# 字典中查找元组键的问题

问题描述

Dictionary<Tuple<int, int>, link_data> dic_links

我有上面的代码。我使用元组作为字典键。我想只使用元组中的两个值之一来查找值。

有没有办法只使用索引而不是在 foreach 中搜索整个字典来找到它?

cout << dic_links[new Tuple<int, int>(57,**).data;

标签: c#dictionarytuples

解决方案


不,不可能仅使用部分键在具有 O(1) 性能的字典中进行搜索。

您的选择是搜索所有键或使用单独的字典将键的每个部分映射到对象(确保它们保持同步)。

如果您只需要按完整键或一个组件搜索并且 O(log n) 是合理的,您可以使用排序列表代替(您将无法通过单个数组的第二个组件搜索)。


有关更多想法,您可以搜索“字典上的范围查询”,您可以在其中找到“键为 10 到 100 的所有项目”,这是同样的问题。


推荐阅读