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