hash_multimap Class

[!NOTA]

Esta API está obsoleta.La alternativa es unordered_multimap Class.

El hash_multimap de la clase contenedora es una extensión de la biblioteca de plantillas estándar y se utiliza para el almacenamiento y la recuperación rápida de datos de una colección en la que cada elemento es un par que tiene un criterio de ordenación cuyo valor no necesita ser único y un valor de datos asociado.

template <
   class Key, 
   class Type, 
   class Traits=hash_compare<Key, less<Key> >, 
   class Allocator=allocator<pair <const Key, Type> > 
>
class hash_multimap

Parámetros

  • Clave
    El tipo de datos clave que se almacene en el hash_multimap.

  • Tipo
    El tipo de datos del elemento que se almacene en el hash_multimap.

  • Traits
    El tipo que incluye dos objetos de función, uno de la clase Traits que puede comparar dos valores de elemento como criterio de ordenación para determinar el orden relativo y una función hash que sea valores de clave unarios de una asignación de predicado de elementos a enteros sin signo size_tescrito.Este argumento es opcional y, hash_compare*<Key, less<Key> >* es el valor predeterminado.

  • Allocator
    El tipo que representa el objeto almacenado de asignador que encapsula los detalles sobre la asignación y la desasignación de los hash_multimap de memoria.Este argumento es opcional, y el valor predeterminado es allocator*<*pair *<*const cierre, Type> >.

Comentarios

El hash_multimap es:

  • Un contenedor asociativa, que un contenedor variable de tamaño que admiten la extracción eficaz de los valores de elemento basándose en un valor de clave asociado.

  • Reversible, porque proporciona un iterador bidireccional para tener acceso a sus elementos.

  • Hashed, porque los elementos se agrupan en depósitos basándose en el valor de una función hash aplicado a los valores de clave de los elementos.

  • Varias, porque sus elementos no necesitan tener claves únicas, de modo que un valor de clave puede tener muchos valores de datos del elemento asociados al.

  • Un contenedor asociativa de pares, porque sus valores del elemento son distintos de los valores de clave.

  • Una clase de plantilla, porque la funcionalidad que proporciona es genérica y así que independiente del tipo específico de datos contenido como elementos o claves.Especificar los tipos de datos que se usarán para los elementos y las claves, sino, como los parámetros de la plantilla de clase junto con la función y el asignador de comparación.

La ventaja principal de hash sobre la ordenación es mayor eficacia; un hash correcto realiza las inserciones, eliminaciones, y las encuentra en tiempo de la media de la constante con respecto a una hora proporcional al logaritmo del número de elementos en el contenedor de las técnicas de ordenación.El valor de un elemento en un hash_multimap, pero no el valor de clave asociado, se puede cambiar directamente.En su lugar, los valores de clave asociados a los antiguos elementos se deben eliminar y los nuevos valores de clave asociar los nuevos elementos insertados.

La opción de tipo de contenedor deben basarse en general en el tipo de búsqueda e insertar requerido por la aplicación.Los contenedores asociativos hash se optimizan para las operaciones de búsqueda, de inserción y eliminación.Las funciones miembro que explícitamente admite estas operaciones es eficaz cuando se usa con una función hash bien diseñada, efectuandolas en una hora que sea por término medio constante y no dependiente del número de elementos en el contenedor.Una función hash bien diseñada genera una distribución uniforme de valores hash y minimiza el número de conflictos, donde una colisión se dice que aparecer cuando los valores de clave distintos se asignan en el mismo valor hash.En el peor de los casos, con la función hash posible peor, el número de operaciones es proporcional al número de elementos de la secuencia (tiempo lineal).

El hash_multimap debe ser el contenedor asociativa choice si las condiciones que asocian los valores a las claves son satisfechas por la aplicación.Un modelo para este tipo de estructura es una lista ordenada de palabras clave con los valores de cadena asociados que proporcionan, por ejemplo, definiciones, donde las palabras siempre no están definidas de forma exclusiva.Si, en su lugar, las palabras clave se definidas de forma exclusiva de modo que las claves se únicas, un hash_map sería el contenedor de la opción.Si, por otro lado, simplemente la lista de palabras fuera almacenada, un hash_set sería el contenedor correcto.Si varias apariciones de las palabras se permitidas, un hash_multiset sería la estructura apropiada del contenedor.

El hash_multimap pide la secuencia que controla llamando a un objeto almacenado Traits hash value_compareescrito.Este objeto almacenado alcance llamando a la función key_compmiembro.Este tipo de objeto de la función debe comportarse igual que un objeto de la clase hash_compare<Key, menos*<Key> >.Específicamente, todos los valores _KeyClaveescrita, la llamada Traits(_Key)* produce una distribución de valores size_tescrito.

Los elementos suelen necesitar ser simplemente menos que comparables establecer este orden: para, con los dos elementos, poder determinar cualquiera que es equivalente (en el sentido de que ninguno es menor que otro) o que uno es menor que otro.Esto produce el orden entre los elementos distintos.En otra nota técnica, la función de comparación es un predicado binario que induce la ordenación parcial estricto en el sentido matemático estándar.Una fbinaria de predicado (x,*y)*es un objeto de función que tiene dos objetos de argumento x e y y un valor devuelto de true o false.El orden impuesto a un hash_multimap es el orden débil estricto si el predicado binario es irreflexive, antisimétrico, y transitiva y si la equivalencia es transitiva, donde dos objetos x e y se definen para ser equivalentes cuando tanto f(x,*y)*y f(la y,*x)*es false.Si la condición más fuerte de igualdad entre las teclas reemplaza el de equivalencia, el orden se convierte en total (en el sentido de que todos los elementos están ordenados en sí) y que las claves se imperceptibles entre sí.

El orden real de elementos de la secuencia controlada depende de la función hash, la función de ordenación, y el tamaño actual de la tabla hash almacenada en el objeto contenedor.No puede determinar el tamaño actual de la tabla hash, por lo que no puede en general predecir el orden de elementos de la secuencia controlada.Insertar elementos no invalida ningún iterador, y quitar elementos reemplaza solo los iteradores que habían notificado específicamente en los elementos eliminados.

El iterador proporcionado por la clase de hash_multimap es un iterador bidireccional, pero el miembro de clase funciona inserción y hash_multimap tiene versiones que toman como parámetros de plantilla un iterador más débil de entrada, cuyos requisitos de funcionalidad son más mínimos que los garantizados por la clase de iteradores bidireccionales.Los distintos conceptos de iterador forman una familia relacionada por refinamientos en su funcionalidad.Cada concepto de iterador tiene su propio hash_multimap de requisitos, y algoritmos que funcionan con ellos límite de la necesidad sus suposiciones a los requisitos proporcionados por ese tipo de iterador.Se supone que un iterador de entrada se puede desreferenciar para hacer referencia a algún objeto y que puede incrementar el iterador siguiente de la secuencia.Éste es un hash_multimap mínimo de funcionalidad, pero es suficiente para poder comunicarse significativo sobre un intervalo de iteradores [_First, _Last) en el contexto de las funciones miembro.

En Visual C++ .NET 2003, los miembros de los archivos de encabezado <hash_map> y <hash_set> ya no están en el espacio de nombres std, pero se han movido bastante al espacio de nombres stdext.Vea El espacio de nombres stdext para obtener más información.

6ewecebk.collapse_all(es-es,VS.110).gifConstructores

hash_multimap

Crea una lista de un tamaño concreto o con elementos de un valor concreto o con allocator concreto o como copia de algún otro hash_multimap.

6ewecebk.collapse_all(es-es,VS.110).gifTypedefs

allocator_type

Un tipo que representa la clase allocator para el objeto hash_multimap .

const_iterator

Un tipo que proporciona un iterador bidireccional que pueda leer un elemento const en hash_multimap.

const_pointer

Un tipo que proporciona un puntero a un elemento const en hash_multimap.

const_reference

Un tipo que proporciona una referencia a un elemento const almacenados en hash_multimap para leer y realizar operaciones const .

const_reverse_iterator

Un tipo que proporciona un iterador bidireccional que pueda leer cualquier elemento const en hash_multimap.

difference_type

Un entero con signo escribe que se puede usar para representar el número de elementos hash_multimap en un intervalo entre elementos indicada por los iteradores.

Iterador

Un tipo que proporciona un iterador bidireccional que pueda leer o modificar cualquier elemento en hash_multimap.

key_compare

Un tipo que proporciona un objeto de función que puede comparar dos criterios de ordenación para determinar el orden relativo de dos elementos en hash_multimap.

key_type

Un tipo que describe el objeto del criterio de ordenación que constituye cada elemento hash_multimap.

mapped_type

Un tipo que representa el tipo de datos almacenados en hash_multimap.

pointer

Un tipo que proporciona un puntero a un elemento en hash_multimap.

referencia

Un tipo que proporciona una referencia a un elemento almacenados en hash_multimap.

reverse_iterator

Un tipo que proporciona un iterador bidireccional que pueda leer o modificar un elemento hash_multimapinvertido.

size_type

Un entero sin signo escribe que puede representar el número de elementos hash_multimap.

value_type

Un tipo que proporciona un objeto de función que puede comparar dos elementos como criterio de ordenación para determinar el orden relativo en hash_multimap.

6ewecebk.collapse_all(es-es,VS.110).gifFunciones miembro

begin

Devuelve un iterador que dirige el primer elemento hash_multimap.

hash_multimap::cbegin

Devuelve un iterador const que dirige el primer elemento hash_multimap.

hash_multimap::cend

Devuelve un iterador const que dirige la ubicación que funciona correctamente el último elemento hash_multimap.

clear

Borra todos los elementos hash_multimap.

count

Devuelve el número de elementos hash_multimap cuya clave coincide con una clave parámetro- especificada.

hash_multimap::crbegin

Devuelve un iterador const que dirige el primer elemento hash_multimapinvertido.

hash_multimap::crend

Devuelve un iterador const que dirige la ubicación que funciona correctamente el último elemento hash_multimapinvertido.

hash_multimap::emplace

Inserta un elemento construido en el lugar en hash_multimap.

hash_multimap::emplace_hint

Inserta un elemento construido en el lugar en hash_multimap, con una sugerencia de posición.

empty

Comprueba si hash_multimap está vacío.

end

Devuelve un iterador que dirige la ubicación que funciona correctamente el último elemento hash_multimap.

equal_range

Devuelve un iterador que dirige la ubicación que funciona correctamente el último elemento hash_multimap.

barrido

Quita un elemento o un intervalo de elementos hash_multimap de posiciones especificadas

find

Devuelve un iterador que dirige la ubicación de un elemento en hash_multimap que tiene un equivalente key en una clave especificada.

get_allocator

Devuelve una copia del objeto allocator utilizado para construir hash_multimap.

inserción

Inserta un elemento o un intervalo de elementos hash_multimap en una posición especificada.

key_comp

Recupera una copia del objeto de comparación utilizado a claves ordenadas en hash_multimap.

lower_bound

Devuelve un iterador al primer elemento hash_multimap que con un valor de clave al que sea igual o mayor que el de una clave especificada.

max_size

Devuelve la longitud máxima hash_multimap.

rbegin

Devuelve un iterador que dirige el primer elemento hash_multimapinvertido.

rend

Devuelve un iterador que dirige la ubicación que funciona correctamente el último elemento hash_multimapinvertido.

size

Especifica un nuevo tamaño para hash_multimap.

intercambio

Cambie los elementos de dos objetos hash_multimap.

upper_bound

Devuelve un iterador al primer elemento hash_multimap que con un valor de clave que es mayor que el de una clave especificada.

value_comp

Recupera una copia del objeto de comparación utilizado para los valores pedidos de elemento en hash_multimap.

6ewecebk.collapse_all(es-es,VS.110).gifOperadores

hash_multimap::operator=

Reemplaza los elementos hash_multimap con una copia de otro hash_multimap.

Requisitos

Encabezado: <hash_map>

Stdext deEspacio de nombres:

Vea también

Referencia

Seguridad para subprocesos de la biblioteca estándar de C++

Biblioteca de plantillas estándar

Otros recursos

miembros de <hash_map>

miembros de hash_multimap