答案 0 :(得分:30)
一些用例:
<强>多重映射强>
<强>多重集强>
本质上是一个带有键和整数的映射。
答案 1 :(得分:2)
如果您遇到的情况是大多数情况下密钥都是唯一的,但有时它们不是唯一的情况,那么多图会很有用。
例如,如果您要创建一个使用哈希作为键的缓存类。大多数情况下,两个不同的对象不会具有相同的哈希值,因此键将是唯一的。但是你可能会得到不同对象的哈希冲突,所以你需要一个多图来覆盖这种情况。
另一个例子是任何类型的非唯一索引(如数据库中)。
至于多重集 - 我认为那些不太有用。我唯一能想到的就是将它用作一种自动排序的列表。
答案 2 :(得分:2)
多集或多图仅适用于可能存在多个特定项的情况。例如,假设您想为图书创建索引。你会扫描文本,扔出所有真正常见的无意义的词(“a”,“an”,“the”等),然后列出所有其余的,以及书中的每个地方发生。
相当多的单词会出现在多个页面上,在这种情况下,您将有多个条目从一个单词映射到不同的页面。处理这种情况的一种方法是从单词到页码的多重映射。
答案 3 :(得分:1)
http://www.cplusplus.com/reference/stl/multimap/
地图是一种联想 存储元素的容器 通过组合键值和 映射值,非常类似于map 容器,但允许不同 元素具有相同的键值。
它是一种注册表,其中元素可以共享密钥。你可以想到公司和员工。街道地址是关键,员工是价值观。
答案 4 :(得分:0)
以下是Wikipedia关于用途的说明:
- 在学生注册系统中,学生可以注册 那里有多个班级 可能是每个人的关联 在课程中注册学生, 密钥是学生ID和 值是课程ID。如果一个 学生参加了三门课程, 会有三个协会 包含相同的密钥。
- 书的索引可以报告给定索引的任意数量的引用 术语,因此可以编码为a 从索引术语到任何的多重映射 参考位置数
答案 5 :(得分:0)
使用multimap,无论您想在何处使用树形结构。
答案 6 :(得分:0)
在向量/列表(或任何其他容器)上使用多集的最重要的好处是查找操作的时间复杂性。 multiset的平均大小写时间复杂度为O(logn),unordered_multiset为O(1)。 multimap和ordered_multimap也是如此。