2010-05-18 8 views

Respuesta

27

Algunos casos de uso:

MultiMap

  • Con el código postal como una clave, todas las personas, que tienen ese código postal
  • Con ID de cuenta como clave, todas las órdenes abiertas de esa persona/cuenta
  • Un diccionario, con por palabra clave varias explicaciones

multiset

es en esencia un mapa con una clave y un número entero.

  • El inventario de una tienda, todos los productos tienen su llave y la cantidad aún disponibles es el valor
  • acumulados datos de ventas de una tienda, cada vez que un producto se vende el producto Identificación del agregarán al multiset aumentando así la cantidad vendida
1

http://www.cplusplus.com/reference/stl/multimap/

Los mapas son una especie de asociativa contenedores que almacenan elementos formados por la combinación de un valor clave y un valor asignado, al igual que el mapa contenedores, pero permitiendo diferentes elementos que tienen el mismo valor de clave

Es un tipo de registro donde los elementos pueden compartir una clave. Puedes pensar en empresas y empleados. La dirección es una clave y los empleados son valores.

0

Esto es lo Wikipedia dice acerca de los usos:

  • En un sistema de inscripción de los estudiantes, donde los estudiantes pueden inscribirse en múltiples clases al mismo tiempo, hay podría existir una asociación para cada inscripción de un estudiante en un curso, donde la clave es la identificación del estudiante y el valor es la ID del curso. Si un estudiante está inscripto en tres cursos, , habrá tres asociaciones que contengan la misma clave.
  • El índice de un libro puede informar de cualquier número de referencias para un término de índice dado, y por lo tanto puede ser codificada como un multimap de términos de índice a cualquier número de ubicaciones de referencia
+3

puede dar cualquier ejemplo para multiset –

2

un ejemplo donde un multimap sería útil si tuvieras una situación en la que la mayoría de las veces las claves son únicas, pero a veces no lo son.

Por ejemplo, si está creando una clase de caché que usó un hash como clave. La mayoría de las veces, dos objetos diferentes no tendrán el mismo hash, por lo que las claves serán únicas. Pero es posible que obtenga colisiones hash para diferentes objetos, por lo que querría un multimapa para cubrir esa situación.

Otro ejemplo sería cualquier tipo de índice no único (como en una base de datos).

En cuanto a un multiset, creo que esos serían menos útiles. Lo único que se me ocurre es usarlo como una especie de lista ordenada automáticamente.

2

Un multiset o multimap es simplemente para situaciones donde puede haber más de un elemento en particular. Por ejemplo, digamos que quería crear un índice para un libro. Examinaría el texto, descartaría todas las palabras sin sentido realmente comunes ("a", "an", "the", etc.) y luego haría una lista de todo el resto, y el lugar del libro donde cada uno ocurrió.

Bastantes de las palabras aparecerán en más de una página, en cuyo caso tendrá mapeo de entradas múltiples de una palabra a páginas diferentes. Una forma de manejar eso sería una multimapa de palabras a números de página.

0

Usa multimap, donde quieras usar el tipo de árbol de una estructura.

+2

[Esta respuesta se marcó automáticamente como una "respuesta tardía a una pregunta anterior, proporcionada por un usuario nuevo. Este comentario se encuentra en ese contexto.] Esta respuesta no parece dar ningún fundamento o tiene algún valor de investigación. Por lo tanto, considere expandir la respuesta significativamente o eliminarla por completo. ¡Gracias! – danfuzz

0

La ventaja más importante de usar un multiset sobre un vector/lista (o cualquier otro contenedor) es la complejidad de tiempo de la operación de búsqueda. la complejidad promedio de tiempo de caso para multiset es O (logn) y unordered_multiset es O (1). Lo mismo es cierto para multimap y ordered_multimap.