No entiendo por qué existe el multimapa si podemos crear un mapa de vectores o un mapa de conjuntos. Para mí únicas diferencias son:¿Cuál es la ventaja de multimap sobre el mapa de vectores?
- usando
equal_range
en multimap para obtener elementos de una llave y en el mapa de vectores que simplemente utilizar[]
operador y tienen vectorial de los elementos. - usando
multimap.insert(make_pair(key,value))
en multimap para agregar elementos ymap_of_vectors[key].push_back(value)
en el mapa de vectores.
¿Por qué utilizar multimap? Para mí, es mejor tener un vector que dos iteradores para obtener todos los valores de una clave.
Esta pregunta se aplica también a unordered_map of vectors y unordered_multimap.
Debo admitir que nunca entendí bien el propósito de 'multimap':/ –
Llegué un poco tarde en la pregunta pero también el multimap consume mucha más memoria que el mapa de vectores debido a los punteros adicionales.La única razón por la que los usaría es si quiero mantener la clave de cada elemento (haciendo 'push_back' no lo mantendrá) – Jcao02
Multimap es genial si no solo quiere hacer un seguimiento de las claves duplicadas de diferentes valores, pero también desea eliminar cualquier par clave/valor en un momento previo aviso. Un mapa de vectores no es adecuado para eso, y aunque puede usar un mapa de listas, es más conveniente usar un multimapa. – richizy