将变量ID与值一起存储的有效方法是什么?

时间:2012-08-10 08:52:24

标签: c data-structures

我希望将数据存储在一个数据结构中,这样我就可以有效地执行以下操作:

我有10个类型1的数组和10个类型为2的数组,每个数组包含100个元素。每个数组存储100个变量的值。伴随着这些,我有20个包含相应变量ID的数组。 在类型1的总数组中,1000个变量的存储值和类型2的数组存储相同1000个变量的不同值。

现在,我需要对类型1的数组中的变量值与类型2的数组的值进行区分。设A是类型1的数组之一。问题是A中的变量将是在所有10个2型阵列中分布10个。

哈希映射没有用,因为我还需要迭代每个数组中的值。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您打算经常进行此类操作,可能需要在程序启动时构造和索引(构造具有O(n^2)时间复杂度),然后再引用它。

struct LookupEntry {
   A *item1;
   B *item2;
};

std::map< IdType, LookupEntry > index;

这将允许您线性地遍历类型A的数组,并在恒定时间内从类型B的数组中获取值。您也可以以类似的方式从B中减去A个项目。

或者,您可以浏览索引项并从另一项中减去一项。