Ruby 将向量元素与其表示的项关联的方法

Ruby 将向量元素与其表示的项关联的方法,ruby,algorithm,data-structures,vector,Ruby,Algorithm,Data Structures,Vector,想象一个“item”结构(表示为JSON哈希) 现在假设我有一组100000个项目,我需要对每个项目的相关值进行计算。在计算结束时,我用新值更新每个项目 为了快速做到这一点,我一直在使用GSL向量库,将每个值作为向量的一个元素加载 例如,项目: { id: 1, value: 5 } { id: 2, value: 6 } { id: 3, value: 7 } 变成: GSL::Vector[5, 6, 7] 元素1对应于项目id 1,元素2对应于项目id 2,等等。然后,我继续对向量中的

想象一个“item”结构(表示为JSON哈希)

现在假设我有一组100000个项目,我需要对每个项目的相关值进行计算。在计算结束时,我用新值更新每个项目

为了快速做到这一点,我一直在使用GSL向量库,将每个值作为向量的一个元素加载

例如,项目:

{ id: 1, value: 5 }
{ id: 2, value: 6 }
{ id: 3, value: 7 }
变成:

GSL::Vector[5, 6, 7]
元素1对应于项目id 1,元素2对应于项目id 2,等等。然后,我继续对向量中的每个元素执行元素计算、乘法、除法等

虽然这样做有效,但我不得不依赖于按ID排序的项目列表,这让我感到困扰

是否还有另一种结构类似于散列(允许我肯定地说,特定的结果值对应于特定的项),但允许我像向量一样执行快速、高效的元素操作


我正在使用Ruby和GSL绑定,但如果有必要,我愿意用另一种语言重新编写。

如果ID之间存在差异,可能最好使用HashMap(Ruby的Hash),我不明白为什么假设数据是按IDI排序会有问题。我假设这会让您担心,因为您可能在ID范围内存在差异。关联数组不会有这个问题。就像瓦雷拉说的——使用HashMap。它可以容忍ID中的漏洞。因为它是大量标准化数据,为什么不将其推送到像SQLite这样的数据库中呢?数据库访问操作得到了极大的优化。此外,Ruby有很好的数据库库,这里的问题是在向量中执行操作要比在循环中快得多。因此,如果我需要对100万个项目的值进行复杂计算,那么创建100万个元素向量并执行操作要比循环处理100万个项目快得多。所以我认为我不能使用哈希映射。
GSL::Vector[5, 6, 7]