hash_multiset (STL/CLR)

La clase de plantilla describe un objeto que controla una secuencia de la variar- longitud de elementos con acceso bidireccional. Utiliza el contenedor hash_multiset para administrar una secuencia de elementos como una tabla hash, cada entrada de tabla almacenar una lista vinculada bidireccional de nodos, y cada nodo almacenando un elemento. El valor de cada elemento se utiliza como clave, para ordenar la secuencia.

En la descripción siguiente, GValue es igual que GKey, que a su vez es igual que Key a menos que este último es un tipo de referencia, en este caso es Key^.

template<typename Key>
    ref class hash_multiset
        :   public
        System::ICloneable,
        System::Collections::IEnumerable,
        System::Collections::ICollection,
        System::Collections::Generic::IEnumerable<GValue>,
        System::Collections::Generic::ICollection<GValue>,
        System::Collections::Generic::IList<GValue>,
        Microsoft::VisualC::StlClr::IHash<Gkey, GValue>
    { ..... };

Parámetros

  • Key
    Tipo del componente clave de un elemento en la secuencia controlada.

Miembros

Definición de tipo

Descripción

hash_multiset::const_iterator (STL/CLR)

El tipo de un iterador constante para la secuencia controlada.

hash_multiset::const_reference (STL/CLR)

El tipo de una referencia constante a un elemento.

hash_multiset::const_reverse_iterator (STL/CLR)

El tipo de un iterador inverso constante para la secuencia controlada.

hash_multiset::difference_type (STL/CLR)

El tipo de distancia a (firmada posiblemente) entre dos elementos.

hash_multiset::generic_container (STL/CLR)

El tipo de interfaz genérica para el contenedor.

hash_multiset::generic_iterator (STL/CLR)

El tipo de un iterador para la interfaz genérica para el contenedor.

hash_multiset::generic_reverse_iterator (STL/CLR)

El tipo de un iterador inverso para la interfaz genérica para el contenedor.

hash_multiset::generic_value (STL/CLR)

El tipo de un elemento de la interfaz genérica para el contenedor.

hash_multiset::hasher (STL/CLR)

El delegado de hash para una clave.

hash_multiset::iterator (STL/CLR)

El tipo de un iterador para la secuencia controlada.

hash_multiset::key_compare (STL/CLR)

El delegado de ordenación para dos claves.

hash_multiset::key_type (STL/CLR)

El tipo de una clave de ordenación.

hash_multiset::reference (STL/CLR)

El tipo de una referencia a un elemento.

hash_multiset::reverse_iterator (STL/CLR)

El tipo de un iterador inverso para la secuencia controlada.

hash_multiset::size_type (STL/CLR)

El tipo de distancia (no negativa) de a entre dos elementos.

hash_multiset::value_compare (STL/CLR)

El delegado de ordenación por dos valores de elemento.

hash_multiset::value_type (STL/CLR)

El tipo de un elemento.

Función de miembro

Descripción

hash_multiset::begin (STL/CLR)

Designa el principio de la secuencia controlada.

hash_multiset::bucket_count (STL/CLR)

Cuenta el número de depósitos.

hash_multiset::clear (STL/CLR)

Quita todos los elementos.

hash_multiset::count (STL/CLR)

Cuenta los elementos que coinciden con una clave especificada.

hash_multiset::empty (STL/CLR)

Comprueba si no hay elementos presentes.

hash_multiset::end (STL/CLR)

Designa el final de la secuencia controlada.

hash_multiset::equal_range (STL/CLR)

Encuentra el intervalo que coincide con una clave especificada.

hash_multiset::erase (STL/CLR)

Quita los elementos en las posiciones especificadas.

hash_multiset::find (STL/CLR)

Busca un elemento que coincida con una clave especificada.

hash_multiset::hash_delegate (STL/CLR)

Copia el delegado de hash para una clave.

hash_multiset::hash_multiset (STL/CLR)

Construye un objeto contenedor.

hash_multiset::insert (STL/CLR)

Agrega elementos.

hash_multiset::key_comp (STL/CLR)

Copia el delegado de ordenación para dos claves.

hash_multiset::load_factor (STL/CLR)

Cuenta los elementos multimedia por el depósito.

hash_multiset::lower_bound (STL/CLR)

Encuentra el inicio del intervalo que coincide con una clave especificada.

hash_multiset::make_value (STL/CLR)

Construye un objeto value.

hash_multiset::max_load_factor (STL/CLR)

Obtiene o establece elementos máximos por el depósito.

hash_multiset::rbegin (STL/CLR)

Designa el principio de la secuencia controlada inversa.

hash_multiset::rehash (STL/CLR)

Recompila la tabla hash.

hash_multiset::rend (STL/CLR)

Designa el final de la secuencia controlada inversa.

hash_multiset::size (STL/CLR)

Cuenta el número de elementos.

hash_multiset::swap (STL/CLR)

Intercambia el contenido de dos contenedores.

hash_multiset::to_array (STL/CLR)

Copia la secuencia controlada a una nueva matriz.

hash_multiset::upper_bound (STL/CLR)

Encuentra el final del intervalo que coincide con una clave especificada.

hash_multiset::value_comp (STL/CLR)

Copia el delegado de ordenación por dos valores de elemento.

operador ??

Descripción

hash_multiset::operator= (STL/CLR)

Reemplaza la secuencia controlada.

Interfaces

Interfaz

Descripción

ICloneable

Dupliquen un objeto.

IEnumerable

Secuencia a través de los elementos.

ICollection

Mantenga el grupo de elementos.

IEnumerable

Secuencia mediante elementos escritos.

ICollection

Mantenga el grupo de elementos escritos.

IHashKey<, value>

Mantenga el contenedor genérico.

Comentarios

El objeto asigna y libera el almacenamiento de la secuencia que controla mientras los nodos individuales en una lista vinculada bidireccional. El acceso de la velocidad, el objeto también mantiene una matriz de la variar- longitud de punteros de la lista (la tabla hash), administrar eficazmente el conjunto aparece como secuencia de sublistas, o depósitos. Nunca insertar elementos en un depósito mantener orden modificando los vínculos entre los nodos, copiando el contenido de un nodo a otro. Eso significa que puede insertar y quitar elementos libremente sin elementos restantes que modifican.

El objeto orders cada depósito que controla llamando a un objeto almacenado de delegado de hash_set::key_compare (STL/CLR)escrito. Puede especificar el objeto almacenado de delegado cuando se construye el hash_set; si no especifica ningún objeto delegado, el valor predeterminado es la comparación operator<=(key_type, key_type).

Tiene acceso al objeto almacenado de delegado llamando a la función hash_set::key_comp (STL/CLR)()miembro. Este tipo de objeto delegado debe definir el equivalente de ordenación entre las teclas de hash_set::key_type (STL/CLR)escrito. Es decir, para cualquier dos claves X y Y:

key_comp()(X, Y) devuelve el mismo resultado booleano en cada llamada.

Si key_comp()(X, Y) && key_comp()(Y, X) es true, el X y Y se dice que tienen orden equivalente.

Las reglas de ordenación que se comporte como operator<=(key_type, key_type), operator>=(key_type, key_type) o operator==(key_type, key_type) define el orden eqivalent.

Observe que el contenedor garantiza sólo los elementos cuyas claves tienen equivalente de ordenación (y que hash al mismo valor entero) adyacentes en un depósito. A diferencia de la clase de plantilla hash_set (STL/CLR), un objeto de clase de plantilla hash_multiset no requiere que las claves para todos los elementos son únicas. (Dos o más claves pueden tener orden equivalente).

El objeto determina qué depósito debe contener una clave de ordenación determinada llamando a un objeto almacenado de delegado de hash_set::hasher (STL/CLR)escrito. Tiene acceso a este objeto almacenado llamando a la función hash_set::hash_delegate (STL/CLR)() miembro para obtener un valor entero que depende del valor de clave. Puede especificar el objeto almacenado de delegado cuando se construye el hash_set; si no especifica ningún objeto delegado, el valor predeterminado es la función System::Object::hash_value(key_type). Es decir, para cualquier clave X y Y:

hash_delegate()(X) devuelve el mismo resultado entero en cada llamada.

Si X y Y tiene ordenación equivalente, después hash_delegate()(X) debe devolver el mismo resultado entero que hash_delegate()(Y).

Cada elemento actúa como una clave y valor. La secuencia se representan de forma que permita búsqueda, la inserción, y la eliminación de un elemento arbitrario con varias operaciones que sea independiente del número de elementos de la secuencia (tiempo constante) -- por lo menos en el mejor de los casos. Por otra parte, inserta un elemento no invalida ningún iterador, y quitar un elemento reemplaza solo los iteradores que señalan en el elemento quitado.

Si los valores hash no se distribuyen uniformemente, sin embargo, una tabla hash puede degenerar. Al final -- para una función hash que siempre devuelve el mismo valor -- la búsqueda, la inserción, y la eliminación son proporcionales al número de elementos de la secuencia (tiempo lineal). El contenedor se esfuerza para elegir una función hash razonable, un tamaño erróneo de depósito, y un tamaño de tabla hash (número total de depósitos), pero puede reemplazar cualquiera o todas estas opciones. Vea, por ejemplo, las funciones hash_set::max_load_factor (STL/CLR) y hash_set::rehash (STL/CLR).

Un hash_multiset admite iteradores bidireccionales, que significa que se puede pasar a los elementos adyacentes dado un iterador que señale un elemento de la secuencia controlada. Un nodo principal especial corresponde al iterador devuelto por hash_multiset::end (STL/CLR)(). Puede reducir este iterador para lograr el último elemento de la secuencia controlada, si existe. Puede incrementar un iterador de hash_multiset para lograr el nodo principal, y a continuación comparará el igual a end(). Pero no puede desreferenciar el iterador devuelto por end().

Observe que no puede hacer referencia a un elemento de hash_multiset determinado directamente su posición numérica -- esto requiere un iterador de acceso aleatorio.

Un iterador de hash_multiset almacena un identificador al nodo asociado de hash_multiset, que a su vez almacena un identificador para el contenedor asociado. Puede usar iteradores únicamente con los objetos contenedores asociados. Un iterador de hash_multiset sigue siendo válido siempre y cuando el nodo asociado de hash_multiset está asociado a algún hash_multiset. Por otra parte, un iterador válido es dereferencable -- puede utilizarlo para obtener acceso o modificar el valor del elemento que señala -- siempre y cuando no es igual a end().

Borrar o quitar un elemento denomina destructor por el valor almacenado. Destruyendo el contenedor borra todos los elementos. Así, un contenedor cuyo tipo de elemento es una clase de referencia se asegura que ningún elemento sobrevivan al contenedor. La nota, sin embargo, que un contenedor de identificadores hace not destruye sus elementos.

Requisitos

cliext </hash_set deEncabezado: >

cliext deEspacio de nombres:

Vea también

Referencia

hash_map (STL/CLR)

hash_multiset (STL/CLR)

hash_set (STL/CLR)

map (STL/CLR)

multiset (STL/CLR)

multiset (STL/CLR)

set (STL/CLR)

Otros recursos

Referencia de la biblioteca STL/CLR