我需要存储有关内容的信息在一个查找表中,以便可以非常快速地访问。我可能需要递归引用查找表中的一些元素才能获取有关内容的完整信息。哪种数据结构更好:
- 使用其中一个参数作为键,将所有条目唯一性并将其余信息作为值的Map。
- 为每个唯一条目使用静态数组,并根据键(与MAP中使用的相同)在需要时访问它们。
我希望我的软件具有鲁棒性,因为如果发生任何故障,这对我的产品来说都是灾难性的。
我需要存储有关内容的信息在一个查找表中,以便可以非常快速地访问。我可能需要递归引用查找表中的一些元素才能获取有关内容的完整信息。哪种数据结构更好:
我希望我的软件具有鲁棒性,因为如果发生任何故障,这对我的产品来说都是灾难性的。
char cipher[256]
,只需使用字符的ASCII码来索引替换字符。如果键是复杂对象或者太多,你可能只能使用映射表。unordered_map
)。unordered_map
。使用一个包含5000个元素的 map
,平均访问时间为 O(log n),大约需要12次访问。而哈希表则最多只需要一到两次访问。std::map
中的查找时间应该为O=ln(n)
,在最坏情况下,静态数组中的线性搜索为O=n
。
即使std::map
占用更多内存(在大多数情况下这不应该成为问题),我仍强烈建议使用它。
此外,您可以创建“映射的映射”或更深层次的结构:
typedef std::map<MyKeyType, std::map<MyKeyType, MyValueType> > MyDoubleMapType;