Pregunta

A medida que los estados de interrogación ... no consigo el punto sobre multisets / < a href = "http://en.wikipedia.org/wiki/Multimap" rel = "noreferrer"> multimaps .

Así que, ¿cuál es el propósito?

¿Fue útil?

Solución

Algunos casos de uso:

multimap

  • Con postal código como una llave, 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, la palabra clave por varias explicaciones

conjunto múltiple

es, en esencia, un mapa con una llave y un recuento de número entero.

  • El inventario de una tienda, todos los productos tienen su llave y la cantidad todavía está disponible es el valor
  • acumulados datos de ventas de una tienda, cada vez que se vende un producto del Identificación del producto Descargue añade a la multiset lo que aumenta la cantidad vendida

Otros consejos

Un ejemplo donde un multimap sería útil si has tenido una situación en la mayor parte del tiempo las teclas son únicos, pero a veces no lo son.

Por ejemplo, si estuviera creando una clase de caché que utiliza un hash como clave. La mayoría de las veces dos objetos diferentes no tendrá el mismo hash, por lo que las claves serán únicas. Sin embargo, es posible que obtendrá colisiones hash para diferentes objetos, por lo que quiere un multimap 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 conjunto múltiple - creo que los que serían menos útiles. Lo único que se me ocurre sería utilizarlo como una especie de lista ordenada de forma automática.

Un conjunto múltiple o multimap es simplemente para situaciones donde puede haber más de uno de un artículo en particular. Por ejemplo, supongamos que desea crear un índice para un libro. Se podría escanear a través del texto, tirar todas las palabras sin sentido muy comunes ( "un", "una", "el", etc.) y luego hacer una lista de todos los demás, y el lugar en el libro donde cada uno ocurrido.

Un buen número de las palabras van a aparecer en más de una página, en cuyo caso tendrá múltiples entradas de asignación de una palabra a diferentes páginas. Una forma de asa que sería un multimap de las palabras a los números de página.

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

  

Los mapas son una especie de asociativa   recipientes que los elementos almacena formaron   por la combinación de un valor de clave y   un valor asignado, al igual que un mapa   contenedores, pero permitiendo diferente   elementos a tienen el mismo valor clave.

Es una especie de registro en el que los elementos pueden compartir una clave. Se puede pensar en las empresas y los empleados. dirección de la calle es una clave y los empleados son valores.

Esto es lo que Wikipedia dice acerca de los usos:

  
      
  • En un sistema de inscripción de los estudiantes, donde los estudiantes pueden ser inscritos en   múltiples clases al mismo tiempo, hay   podría ser 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 el ID de golf. Si una   estudiante está inscrito en tres cursos,   habrá tres asociaciones   que contiene la misma clave.
  •   
  • El índice de un libro puede informar de cualquier número de referencias para un índice dado   plazo, y por lo tanto puede codificarse como una   MultiMap de los términos del índice a cualquier   número de ubicaciones de referencia
  •   

Uso multimap, donde quiera que desee utilizar tipo de árbol de una estructura.

El beneficio más importante de la utilización de un conjunto múltiple sobre un vector / lista (o cualquier otro recipiente) es la complejidad del tiempo de operación de búsqueda. complejidad media hora caso para multiset es O (log n) y unordered_multiset es O (1). Lo mismo es cierto para multimap y ordered_multimap.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top