元素在多映射中可搜索吗?需要吗
Are elements searchable in a multimap? Is it needed?
如果我有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。
否--映射和多映射都不能做到这一点。你可能想要一个类似Boost双地图的东西。
如果您希望值部分是一个具有有效查找时间的序列,可以使用
multimap<string, set>
如果值序列的元素是唯一的,或者
multimap<string, multiset>
如果没有。这将为您提供对数查找时间和对数插入(根据插入类型,这可能更好或更糟,请参阅std::set
和std::multiset
文档)。集合的行为与std::maps
非常相似,只是每个元素的值都是它的键。
我想我需要一个
multimap<string,map>
来有效地搜索价值部分(即红黑树的一部分)
你想得对。
但如果它们的键和值是有序的,那么我是否需要一个关联容器。使用矢量不是更好吗?
如果它们是有序的,并且您不打算快速添加或删除元素,那么是的——vector
中的二进制搜索(在<algorithm>
中提供)可能会优于map
查找。
相关文章:
- 在C++中搜索嵌套多映射值
- 映射如何在给定键处搜索值
- 在多重映射中搜索一系列键
- 如何搜索所有映射键 C++
- C++映射中搜索元组错误:无法将"int"左值绑定到"int&&"
- 使用迭代器搜索映射中的值
- 通过常量std::映射进行搜索
- 在C++中使用映射而不是数组来保护在数组边界之外的搜索
- 数组、矢量、映射和列表数据搜索
- 我可以将可搜索字符设备“/dev/mem_8”映射到内存并使用x86_64指令访问它吗?
- 在映射中搜索值的C++类和方法
- C++映射从迭代器位置开始搜索
- 在一对多映射中搜索一个密钥
- 映射和二叉搜索树
- 在大内存映射文件中搜索
- 在映射中搜索:成员与非成员lower_bound
- 在c++中搜索映射的元素
- 元素在多映射中可搜索吗?需要吗
- 如何在STL映射中搜索键
- 使用 STL 映射/集合/多重集/多重映射,如何查找大于或等于搜索键的第一个值