可以在多重映射中搜索元素吗?需要吗?

发布于 2024-11-14 07:42:41 字数 419 浏览 2 评论 0原文

如果我有 Key->Elements

A->B,C,D,E  

Are B,C,D,E searchable ,即它们是否插入到红黑树中。

我想答案是否定的。我想我需要一个

multimap<string,map>

来使值部分可以有效地搜索(即红黑树的一部分)

A->B,C,D
B->C,D
C->D
D->E

如果我使用集合映射,这将最好地描述这个结构。地图的每个Key都指向一个集合。每个集合基本上都是一个元素列表。因为我想要高效的搜索和插入,所以我使用 std::map 和 std::set 而不是 std::list 和 std::list。

If I have Key->Elements

A->B,C,D,E  

Are B,C,D,E searchable , i.e. are they inserted into a red and black tree.

I think the answer is no. I think I would need a

multimap<string,map>

to make the value part searchable efficiently (i.e. part of a red and black tree)

A->B,C,D
B->C,D
C->D
D->E

If I use a map of sets, this would best describe this structure. Each Key of the map points to a set. Each set is basically a list of Elements. Because I'd like efficient searching and inserting I'm using std::map and std::set instead of std::list and std::list.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

七分※倦醒 2024-11-21 07:42:41

不——地图和多重地图都不会这样做。您需要类似 Boost bimap 的东西。

No -- neither map nor multimap will do that. You'd want something like a Boost bimap for this.

半暖夏伤 2024-11-21 07:42:41

如果您希望值部分成为具有高效查找时间的序列,则可以使用

multimap<string, set>

if 值序列的元素是否唯一

multimap<string, multiset>

。这将为您提供对数查找时间和对数插入(这可能更好或更差,具体取决于插入类型,请查看 std::setstd::multiset文档)。这些集合的行为与 std::maps 非常相似,只不过每个元素的值是它的键。

If you want the value part to be a sequence with efficient look-up time, you can use

multimap<string, set>

if the elements of the value-sequence are unique, or

multimap<string, multiset>

if not. This would give you logarithmic lookup time, and logarithmic insertion (this can be better or worse depending on the type of insertion, look at std::set and std::multiset documentation). The sets behave much like the std::maps, except that the value of each element is its key.

兮颜 2024-11-21 07:42:41

我想我需要一个multimap来使值部分可以有效地搜索(即红黑树的一部分)

你想对了。

但是,如果它们的键和值按顺序排列,那么我是否需要一个关联容器。使用向量不是更好吗?

如果它们按顺序排列,并且您不打算快速添加或删除元素,那么可以 - 在 向量中提供) > 预计会优于 map 查找。

I think I would need a multimap<string,map> to make the value part searchable efficiently (i.e. part of a red and black tree)

You think right.

But if they keys and values are in oder then do I need an associative container at all. Wouldn't it be better to use a vector?

If they're in order, and you don't plan on adding or removing elements quickly, then yes - a binary search (provided in <algorithm>) in a vector can be expected to outperform a map lookup.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文