What's the advantage of multimap over map of vectors?

一个人想着一个人 提交于 2019-11-29 20:25:01

I would say it depends on whether all the values with same key have a relationship that you want to address.

So for example, do you often go through all elements with key X, or pass them to a function, and so on? Then it is more convenient to already have them in their separate container, that you can address directly.

However, if you just have a collection of items, that may share same key value, or not, why use vectors in between? It is more convenient to run through the multimap with iterators than have a nested for-loop for the map, vector case.

Another way of looking at this: If multiple entries per key is very common, your structure is more efficient in the map, vector case. If they seldomly happen, it is the opposite.

Artyom

There are many important differences between multimap<x, y> and map<x, vector<y>>

Once you had inserted a value into multimap, you know that the iterator would remain valid until you remove it and this is very strong property, you can't have it with map of vectors.

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

The iterator remains valid until it is erased from map, while in second case, it would be invalidated each time you add new entry to the vector.

Also note that map<x, vector<y>> may have an empty value set with existing key, while multimap does not.

These are different things that behave differently.

And to be honest I miss multimap in some languages that do not provide it in their library.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!