gpt4 book ai didi

c# - 访问双数组作为字典中的键的最快方法

转载 作者:太空宇宙 更新时间:2023-11-03 19:09:26 25 4
gpt4 key购买 nike

我有一个 double[] array,我想用它作为key(不是字面意思,而是double数组中所有double都需要匹配时匹配key的方式)

使用 double[] 的最快方法是什么?数组作为字典的键?

是否正在使用 Dictionary<string, string> (将 double[] 转换为字符串)或者任何其他类似的转换

最佳答案

鉴于所有键数组的长度都相同,要么考虑使用 Tuple<,,, ... ,> ,或在数组上使用结构相等比较器。

元组:

var yourDidt = new Dictionary<Tuple<double, double, double>, string>();
yourDict.Add(Tuple.Create(3.14, 2.718, double.NaN), "da value");

string read = yourDict[Tuple.Create(3.14, 2.718, double.NaN)];

与(强类型版本)StructuralEqualityComparer :

class DoubleArrayStructuralEqualityComparer : EqualityComparer<double[]>
{
public override bool Equals(double[] x, double[] y)
{
return System.Collections.StructuralComparisons.StructuralEqualityComparer
.Equals(x, y);
}

public override int GetHashCode(double[] obj)
{
return System.Collections.StructuralComparisons.StructuralEqualityComparer
.GetHashCode(obj);
}
}

...

var yourDict = new Dictionary<double[], string>(
new DoubleArrayStructuralEqualityComparer());

yourDict.Add(new[] { 3.14, 2.718, double.NaN, }, "da value");

string read = yourDict[new[] { 3.14, 2.718, double.NaN, }];

另请考虑 Sergey Berezovskiy 的建议,即创建一个自定义类或(不可变!)结构来保存您的 double 集。秒。通过这种方式,您可以以自然的方式命名您的类型及其成员,从而使您的工作更加清楚。如果需要,您的类/结构可以在以后轻松扩展。

关于c# - 访问双数组作为字典中的键的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22009159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com