题
我不明白为什么要创建矢量图或集合地图的映射,为什么会存在多映像。对我来说,只有差异是:
- 使用
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>>
可能具有现有密钥的空值设置,而多映射则没有。
这些都是不同的事情。
老实说,我想念某些语言中没有在其图书馆中提供的语言。
不隶属于 StackOverflow