如果我有Key-> Elements
A->B,C,D,E
B,C,D,E是可搜索的,即它们是否插入红色和黑色的树中。
我认为答案是肯定的。我想我需要一个
multimap<string,map>
使值部分有效地可搜索(即红色和黑色树的一部分)
A->B,C,D
B->C,D
C->D
D->E
如果我使用集合图,这将最好地描述这个结构。地图的每个键都指向一个集合。每组基本上都是元素列表。因为我想高效搜索和插入我使用std :: map和std :: set而不是std :: list和std :: list。
答案 0 :(得分:2)
不 - 地图和多图都不会这样做。你需要像Boost bimap这样的东西。
答案 1 :(得分:1)
我想我需要一个
multimap<string,map>
来使值部分有效搜索(即红色和黑色树的一部分)
你是对的。
但是如果他们的键和值都在奥得河那么我需要一个关联容器。使用矢量不是更好吗?
如果它们有序,并且您不打算快速添加或删除元素,那么是 - <algorithm>
中的二分搜索(在vector
中提供)可能会超出预期map
查找。
答案 2 :(得分:1)
如果您希望值部分是具有有效查找时间的序列,则可以使用
multimap<string, set>
如果值序列的元素是唯一的,或
multimap<string, multiset>
如果没有。这将为您提供对数查找时间和对数插入(这可能更好或更差,具体取决于插入类型,请查看std::set
和std::multiset
文档)。这些集的行为与std::maps
非常相似,只不过每个元素的值都是它的键。