“Conjunto múltiple” y “multimap” - ¿Cuál es el punto?
-
27-09-2019 - |
Pregunta
A medida que los estados de interrogación ... no consigo el punto sobre multiset
s / < a href = "http://en.wikipedia.org/wiki/Multimap" rel = "noreferrer"> multimap
s .
Así que, ¿cuál es el propósito?
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 ??li>
- 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.