我不明白为什么要创建矢量图或集合地图的映射,为什么会存在多映像。对我来说,只有差异是:

  • 使用 equal_range 在获取密钥元素和向量图中的多项图中,我们只使用 [] 操作员并具有元素的向量。
  • 使用 multimap.insert(make_pair(key,value)) 在添加元素和 map_of_vectors[key].push_back(value) 在矢量图中。

那么,为什么要使用Multimap呢?对我来说,拥有一个矢量比两个迭代器更好的是获得键的所有值。

这个问题也适用于向量和unordered_multimap的unordered_map。

有帮助吗?

解决方案

我要说的是,这取决于所有具有相同密钥的值是否具有要解决的关系。

因此,例如,您是否经常使用键X浏览所有元素,还是将它们传递到函数,等等?然后,已经将它们放在单独的容器中更加方便,您可以直接解决。

但是,如果您只有一块项目集合,则可能共享相同的密钥值,或者不具有相同的关键价值,为什么要在两者之间使用向量?与迭代器一起浏览多项图比在地图矢量案例中嵌套的前循环更方便。

查看这一点的另一种方式:如果每个键多个条目非常普遍,则您的结构在地图中更有效,矢量案例。如果他们很少发生,那是相反的。

其他提示

之间有许多重要区别 multimap<x, y>map<x, vector<y>>

一旦将一个值插入 多图像, ,您知道迭代器将保持有效,直到您将其删除并且这是非常强大的属性,因此您无法使用向量图绘制它。

multimap<x,y>::iterator p=mymap.insert(make_pair(a,b));

迭代器一直有效,直到从地图上删除为止,而在第二种情况下,每次将新的条目添加到向量时,它都会无效。

另请注意 map<x, vector<y>> 可能具有现有密钥的空值设置,而多映射则没有。

这些都是不同的事情。

老实说,我想念某些语言中没有在其图书馆中提供的语言。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top