C 存储变量ID和值的有效方法是什么?
我希望将我的数据存储在一个数据结构中,使我能够高效地执行以下操作: 我有10个类型为1的数组和10个类型为2的数组,每个数组有100个元素。每个数组存储100个变量的值。伴随着这些,我有20个包含相应变量ID的数组。 类型1的数组总共存储1000个变量的值,类型2的数组存储相同1000个变量的不同值 现在,我需要取类型1数组和类型2数组中变量值的差异。设A为类型1的数组之一。问题是A中的变量将分布在所有10个类型为2的数组中C 存储变量ID和值的有效方法是什么?,c,data-structures,C,Data Structures,我希望将我的数据存储在一个数据结构中,使我能够高效地执行以下操作: 我有10个类型为1的数组和10个类型为2的数组,每个数组有100个元素。每个数组存储100个变量的值。伴随着这些,我有20个包含相应变量ID的数组。 类型1的数组总共存储1000个变量的值,类型2的数组存储相同1000个变量的不同值 现在,我需要取类型1数组和类型2数组中变量值的差异。设A为类型1的数组之一。问题是A中的变量将分布在所有10个类型为2的数组中 散列映射没有用处,因为我还需要迭代每个数组中的值。有什么想法吗?如果你
散列映射没有用处,因为我还需要迭代每个数组中的值。有什么想法吗?如果你打算经常做这样的操作,你可能想在程序启动时构造和索引一次(构造的时间复杂度
O(n^2)
然后再参考它
struct LookupEntry {
A *item1;
B *item2;
};
std::map< IdType, LookupEntry > index;
struct LookupEntry{
A*项目1;
B*项目2;
};
std::mapindex;
这将允许您线性遍历A
类型的数组,并在固定时间内从B
类型的数组中获取值。您还可以用类似的方式从A
中减去B
项
或者,你可以浏览索引项并从另一项中减去一项。我的评论很愚蠢,所以我删除了它。使用各种哈希映射可能是您的最佳选择,即使您必须使用其中的10种。