c++ - example - "Multiset" y "Multimap"-¿Cuál es el punto?
multimap java (7)
Algunos casos de uso:
multimapa
- Con el código postal como clave, todas las personas que tienen ese código postal
- Con ID de cuenta como clave, todos los pedidos abiertos de esa persona / cuenta
- Un diccionario, con varias explicaciones por palabra clave.
Multiset
es en esencia un mapa con una clave y un número entero.
- El inventario de una tienda, todos los productos tienen su clave y la cantidad aún disponible es el valor
- datos de ventas acumulados de una tienda, cada vez que se vende un producto, la identificación del producto se agrega al conjunto múltiple, lo que aumenta la cantidad vendida
El beneficio más importante de usar un conjunto múltiple 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 el multimap y el orden_multimap.
Esto es lo que dice multimaps sobre los usos:
- En un sistema de inscripción de estudiantes, donde los estudiantes pueden inscribirse en varias clases simultáneamente, puede haber 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 identificación del curso. Si un estudiante está inscrito en tres cursos, habrá tres asociaciones que contienen la misma clave.
- El índice de un libro puede reportar cualquier número de referencias para un término de índice dado, y por lo tanto puede codificarse como un multimapa de términos de índice a cualquier número de ubicaciones de referencia
Un ejemplo en el que un multimapa sería útil si tuviera 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 estaba creando una clase de caché que usaba 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 obtengas colisiones de hash para diferentes objetos, por lo que querrías 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 serían menos útiles. Lo único que se me ocurre es usarlo como una especie de lista ordenada automáticamente.
Un multiset o multimap es simplemente para situaciones donde puede haber más de uno de un elemento en particular. Por ejemplo, supongamos que desea crear un índice para un libro. Escanearía el texto, tirarí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 en el libro donde cada uno ocurrió.
Algunas de las palabras aparecerán en más de una página, en cuyo caso tendrá varias entradas asignadas de una palabra a otra. Una forma de manejar eso sería un multimapa de palabras a números de página.
Use multimapa, donde quiera que quiera usar una especie de estructura de árbol.
http://www.cplusplus.com/reference/stl/multimap/
Los mapas son un tipo de contenedores asociativos que almacenan elementos formados por la combinación de un valor clave y un valor mapeado, como los contenedores de mapas, pero que permiten que diferentes elementos tengan el mismo valor clave.
Es una especie 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.