在c#字典中查找元组键的问题 字典dic\u链接

在c#字典中查找元组键的问题 字典dic\u链接,c#,dictionary,tuples,C#,Dictionary,Tuples,我有上面的代码。我使用tuple作为字典键。 我只想使用两个值中的一个来查找值​​在元组中 有没有办法只使用索引而不是在foreach中搜索整个字典来找到它 Dictionary<Tuple<int, int>, link_data> dic_links coutNo,不可能仅使用部分键在具有O(1)性能的字典中进行搜索 您可以选择搜索所有键,或者使用单独的字典将键的每个部分映射到对象(确保它们保持同步) 如果您只需要按完整键或一个组件进行搜索,并且O(logn)是合理

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

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

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

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

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

如果您只需要按完整键或一个组件进行搜索,并且O(logn)是合理的,则可以使用排序列表(您将无法使用单个数组按第二个组件进行搜索)


如需了解更多信息,您可以搜索“字典范围查询”,其中您希望查找“键为10到100的所有项目”,这是相同的问题。

否。该功能旨在使用严格相等的键进行高效搜索。如果您不知道确切的键,那么必须逐个枚举所有元素


在您的例子中,元组的每个单独属性上可能都有重复的值,因此您将无法使用简单的
字典
按属性进行索引。如果数据是静态的,则可以使用,如果在创建索引后需要添加/删除元素,则可以使用
字典。

可以将字典转换为嵌套字典

cout << dic_links[new Tuple<int, int>(57,**).data;
Dictionarydic\u链接;

“我只想使用两个值中的一个来查找值​​在元组中。“-听起来很像您需要两个字典(一个用于属于元组左侧的键,另一个用于属于右侧的键),因为字典并没有针对通过键的子值查找值进行优化。我将测试查找而不是字典。非常感谢。嘿,我申请了查找。它工作得很好。非常感谢。
Dictionary<int, Dictionary<int, link_data>>dic_links;