【发布时间】:2019-11-02 18:04:00
【问题描述】:
我需要创建一个数据结构来跟踪一些分组信息。假设元素只是字符串。例如,{'a', 'b', 'c'} 是一个组,而 {'e', 'f', 'g'} 是另一个组。我还需要支持按键查找,并且按键都是字符串。现在,我可以考虑使用地图:
{a} -> {"a", "b", "c"}
{b} -> {"a", "b", "c"}
{e} -> {"e", "f", "g"}
{f} -> {"e", "f", "g"}
但在这种情况下,我在地图中复制了大量信息,并且尺寸会爆炸。还有其他什么好的数据结构,既紧凑又支持快速查找?
【问题讨论】:
-
"但是在这种情况下,我在地图中复制了很多信息" - 怎么回事?这里重复了什么?您是否担心 3 个元素的数组/向量会引入性能问题?您可能总是有一个
std::shared_ptrs 的映射作为所述数组/向量的值。 -
一个问题。键
a是否称为 a,因为它的元素列表包含“a”? “b”和“c”的情况是否相同? -
为什么这个标签是 [c++] ?如果你想要一个 C++ 答案,请展示你到目前为止所做的尝试。您应该阅读 How to Ask 和 minimal reproducible example
-
什么是“好的数据结构”是由需求决定的,你的需求是不完整的。如果您只想快速查找组,您可以将
"a"、"b"和"c"映射到1;和"e"、"f"和"g"到2。 (由于您对组没有要求,因此需要为它们存储的只是允许比较相等性的值。整数很方便。)
标签: c++ data-structures hashmap