Dictionary 使用任意尺寸的键定义贴图
以下代码用于为每对浮点64创建一个计数器。Dictionary 使用任意尺寸的键定义贴图,dictionary,go,key,Dictionary,Go,Key,以下代码用于为每对浮点64创建一个计数器。 因为映射的键不能是,所以我必须使用数组作为键,这迫使我用常量定义维度 counter := make( map[ [2]float64 ] int ) for _, comb := range combinations{ //combinations is a [n][2]float64 for _, row := range data{ counter[ [...]float64{ row[comb[0]] , row[c
因为映射的键不能是,所以我必须使用数组作为键,这迫使我用常量定义维度
counter := make( map[ [2]float64 ] int )
for _, comb := range combinations{ //combinations is a [n][2]float64
for _, row := range data{
counter[ [...]float64{ row[comb[0]] , row[comb[1]] } ]++
}
}
话虽如此,是否有办法使此地图取决于键的长度(取决于组合的尺寸?我尝试使用一个结构作为键,但据我所知(我可能错了),它的速度稍微慢了一点……出于我的目的(将此应用于所有组合~n!),这不是理想的解决方案 现在我只考虑大小为2和3的组合,我不得不将其分为两个单独的函数,这使得我的代码非常冗长,并且更难维护。 你能找到一种方法来简化它,这样我就可以把它扩展到更多的维度吗
感谢您的任何输入为什么不使用指向切片的指针作为键呢
您可以使用make创建一个具有足够大容量的切片,但在不超过其容量的情况下,指针将保持不变
看看这里,它是我建议的一个例子。请注意,虽然len
[3]float64
,并将第三个值设置为0(或其他一些未使用的值)不使用时?或使用[4]float64
,第一个值是(整数)长度?这些在逻辑上与使用结构相同,但可能更高性能,但代价是更难读取。我实际上有[3]float64案例也完成了。我有一个在维度中导航的开关。因为我想概括,我还有一个替代方法,尽管速度不是很快。我将输入数据转换为字符串,并继续连接它。它将处理时间增加了一倍。但是,对于某些应用程序,它是有效的:)感谢您的输入!