concurrent_unordered_multimap (Clase)
La clase concurrent_unordered_multimap
es un contenedor seguro para simultaneidad que controla una secuencia de elementos de longitud variable del tipo std::pair<const K, _Element_type>
. La secuencia se representa de una manera que habilita la anexión segura para simultaneidad, el acceso a elementos, el acceso a iterador y las operaciones de recorrido de iterador. Aquí, seguro para la simultaneidad significa que los punteros e iteradores siempre son válidos. No es una garantía de inicialización de elementos ni de un orden transversal determinado.
Sintaxis
template <typename K,
typename _Element_type,
typename _Hasher = std::hash<K>,
typename key_equality = std::equal_to<K>,
typename _Allocator_type = std::allocator<std::pair<const K,
_Element_type>>
>,
typename key_equality = std::equal_to<K>,
typename _Allocator_type = std::allocator<std::pair<const K,
_Element_type>>> class concurrent_unordered_multimap : public details::_Concurrent_hash<details::_Concurrent_unordered_map_traits<K,
_Element_type,
details::_Hash_compare<K,
_Hasher,
key_equality>,
_Allocator_type,
true>>;
Parámetros
K
El tipo de clave.
_Element_type
El tipo asignado.
_Hasher
El tipo de objeto de la función hash. Este argumento es opcional y el valor predeterminado es std::hash<K>
.
key_equality
El tipo de objeto de función de comparación de igualdad. Este argumento es opcional y el valor predeterminado es std::equal_to<K>
.
_Allocator_type
El tipo que representa el objeto de asignador almacenado que encapsula los detalles acerca de la asignación y desasignación de memoria para el vector simultáneo. Este argumento es opcional y el valor predeterminado es std::allocator<std::pair<K
, _Element_type>>
.
Miembros
Definiciones de tipos públicas
Nombre | Descripción |
---|---|
allocator_type |
El tipo de un asignador para administrar el almacenamiento. |
const_iterator |
El tipo de un iterador constante para la secuencia controlada. |
const_local_iterator |
El tipo de un iterador de depósito constante para la secuencia controlada. |
const_pointer |
El tipo de un puntero constante a un elemento. |
const_reference |
El tipo de una referencia constante a un elemento. |
difference_type |
El tipo de una distancia con signo entre dos elementos. |
hasher |
El tipo de la función hash. |
iterator |
El tipo de un iterador para la secuencia controlada. |
key_equal |
El tipo de la función de comparación. |
key_type |
El tipo de una clave de ordenación. |
local_iterator |
El tipo de un iterador de depósito para la secuencia controlada. |
mapped_type |
El tipo de un valor asignado asociado a cada clave. |
pointer |
El tipo de un puntero a un elemento. |
reference |
El tipo de una referencia a un elemento. |
size_type |
El tipo de una distancia sin signo entre dos elementos. |
value_type |
El tipo de un elemento. |
Constructores públicos
Nombre | Descripción |
---|---|
concurrent_unordered_multimap | Con sobrecarga. Construye un mapa múltiple desordenado simultáneo. |
Métodos públicos
Nombre | Descripción |
---|---|
hash_function | Devuelve el objeto almacenado de la función hash. |
insert | Con sobrecarga. Agrega elementos al objeto concurrent_unordered_multimap . |
key_eq | Devuelve el objeto de función de comparación de igualdad almacenado. |
swap | Intercambia el contenido de dos objetos concurrent_unordered_multimap . Este método no es seguro para la simultaneidad. |
unsafe_erase | Con sobrecarga. Quita los elementos de concurrent_unordered_multimap en las posiciones especificadas. Este método no es seguro para la simultaneidad. |
Operadores públicos
Nombre | Descripción |
---|---|
operator= | Con sobrecarga. Asigna el contenido de otro objeto concurrent_unordered_multimap a este. Este método no es seguro para la simultaneidad. |
Comentarios
Para obtener más información acerca de la clase concurrent_unordered_multimap
, consulte Contenedores y objetos paralelos.
Jerarquía de herencia
_Traits
_Concurrent_hash
concurrent_unordered_multimap
Requisitos
Encabezado: concurrent_unordered_map.h
Espacio de nombres: simultaneidad
begin
Devuelve un iterador que apunta al primer elemento del contenedor simultáneo. Este método es seguro para simultaneidad.
iterator begin();
const_iterator begin() const;
Valor devuelto
Iterador al primer elemento del contenedor simultáneo.
cbegin
Devuelve un iterador constante que apunta al primer elemento del contenedor simultáneo. Este método es seguro para simultaneidad.
const_iterator cbegin() const;
Valor devuelto
Iterador constante al primer elemento del contenedor simultáneo.
cend
Devuelve un iterador constante que apunta a la ubicación que sigue al último elemento del contenedor simultáneo. Este método es seguro para simultaneidad.
const_iterator cend() const;
Valor devuelto
Iterador constante a la ubicación que sigue al último elemento del contenedor simultáneo.
eliminar
Borra todos los elementos del contenedor simultáneo. Esta función no es segura para la simultaneidad.
void clear();
concurrent_unordered_multimap
Construye un mapa múltiple desordenado simultáneo.
explicit concurrent_unordered_multimap(
size_type _Number_of_buckets = 8,
const hasher& _Hasher = hasher(),
const key_equal& key_equality = key_equal(),
const allocator_type& _Allocator = allocator_type());
concurrent_unordered_multimap(
const allocator_type& _Allocator);
template <typename _Iterator>
concurrent_unordered_multimap(_Iterator _Begin,
_Iterator _End,
size_type _Number_of_buckets = 8,
const hasher& _Hasher = hasher(),
const key_equal& key_equality = key_equal(),
const allocator_type& _Allocator = allocator_type());
concurrent_unordered_multimap(
const concurrent_unordered_multimap& _Umap);
concurrent_unordered_multimap(
const concurrent_unordered_multimap& _Umap,
const allocator_type& _Allocator);
concurrent_unordered_multimap(
concurrent_unordered_multimap&& _Umap);
Parámetros
_Iterator
El tipo de iterador de entrada.
_Number_of_buckets
Número inicial de cubos para este mapa múltiple desordenado.
_Hasher
Función hash para este mapa múltiple desordenado.
key_equality
Función de comparación de igualdad para este mapa múltiple desordenado.
_Allocator
Asignador para este mapa múltiple desordenado.
_Begin
Posición del primer elemento en el intervalo de elementos que se va a copiar.
_End
Posición del primer elemento más allá del intervalo de elementos que se va a copiar.
_Umap
El objeto concurrent_unordered_multimap
de origen del que se van a copiar elementos.
Comentarios
Todos los constructores almacenan un objeto asignador _Allocator
e inicializan el mapa múltiple desordenado.
El primer constructor especifica un mapa múltiple inicial vacío y especifica explícitamente el número de cubos, la función hash, la función de igualdad y el tipo de asignador que se va a usar.
El segundo constructor especifica un asignador para el mapa múltiple desordenado.
El tercer constructor especifica los valores proporcionados por el intervalo del iterador [ _Begin
, _End
).
Los constructores cuarto y quinto especifican una copia del mapa múltiple desordenado simultáneo _Umap
.
El último constructor especifica un movimiento del mapa múltiple desordenado simultáneo _Umap
.
count
Cuenta el número de elementos que coinciden con una clave especificada. Este método es seguro para simultaneidad.
size_type count(const key_type& KVal) const;
Parámetros
KVal
Clave que se va a buscar.
Valor devuelto
Número de veces que aparece la clave en el contenedor.
empty
Comprueba si no hay ningún elemento presente. Este método es seguro para simultaneidad.
bool empty() const;
Valor devuelto
Es true
si el contenedor simultáneo está vacío; de lo contrario, es false
.
Comentarios
En presencia de inserciones simultáneas, tanto si el contenedor simultáneo está vacío como si no puede cambiar inmediatamente después de llamar a esta función, antes de que se lea el valor devuelto.
end
Devuelve un iterador que apunta a la ubicación que sigue al último elemento del contenedor simultáneo. Este método es seguro para simultaneidad.
iterator end();
const_iterator end() const;
Valor devuelto
Iterador a la ubicación que sigue al último elemento del contenedor simultáneo.
equal_range
Busca el intervalo que coincide con una clave especificada. Este método es seguro para simultaneidad.
std::pair<iterator,
iterator> equal_range(
const key_type& KVal);
std::pair<const_iterator,
const_iterator> equal_range(
const key_type& KVal) const;
Parámetros
KVal
Valor de clave que se va a buscar.
Valor devuelto
Un par donde el primer elemento es un iterador al principio del intervalo y el segundo elemento es un iterador al final del intervalo.
Comentarios
Es posible que las inserciones simultáneas provoquen que se inserte más claves después del iterador inicial y antes del iterador final.
find
Busca un elemento que coincide con una clave especificada. Este método es seguro para simultaneidad.
iterator find(const key_type& KVal);
const_iterator find(const key_type& KVal) const;
Parámetros
KVal
Valor de clave que se va a buscar.
Valor devuelto
Iterador que apunta a la ubicación del primer elemento que coincide con la clave proporcionada, o el iterador end()
si no existe dicho elemento.
get_allocator
Devuelve el objeto de asignador almacenado para este contenedor simultáneo. Este método es seguro para simultaneidad.
allocator_type get_allocator() const;
Valor devuelto
El objeto de asignador almacenado para este contenedor simultáneo.
hash_function
Devuelve el objeto almacenado de la función hash.
hasher hash_function() const;
Valor devuelto
Objeto de función hash almacenado.
insert
Agrega elementos al objeto concurrent_unordered_multimap
.
iterator insert(
const value_type& value);
iterator insert(
const_iterator _Where,
const value_type& value);
template<class _Iterator>
void insert(_Iterator first,
_Iterator last);
template<class V>
iterator insert(
V&& value);
template<class V>
typename std::enable_if<!std::is_same<const_iterator,
typename std::remove_reference<V>::type>::value,
iterator>::type insert(
const_iterator _Where,
V&& value);
Parámetros
_Iterator
Tipo de iterador utilizado para la inserción.
V
El tipo del valor insertado en la asignación.
value
Valor que se va a insertar.
_Where
Ubicación inicial para buscar un punto de inserción.
first
Comienzo del intervalo que se va a insertar.
last
Final del intervalo que se va a insertar.
Valor devuelto
Iterador que apunta a la ubicación de inserción.
Comentarios
La primera función miembro inserta el elemento value
en la secuencia controlada y, luego, devuelve el iterador que designa el elemento insertado.
La segunda función miembro devuelve insert( value
), con _Where
como un lugar inicial dentro de la secuencia controlada para buscar el punto de inserción.
La tercera función miembro inserta la secuencia de valores de elementos del intervalo [first
, last
).
Las dos últimas funciones miembro se comportan igual que las dos primeras, salvo que value
se usa para construir el valor insertado.
key_eq
Devuelve el objeto de función de comparación de igualdad almacenado.
key_equal key_eq() const;
Valor devuelto
El objeto de función de comparación de igualdad almacenado.
load_factor
Calcula y devuelve el factor de carga actual del contenedor. El factor de carga es el número de elementos en el contenedor dividido por el número de cubos.
float load_factor() const;
Valor devuelto
Factor de carga del contenedor.
max_load_factor
Obtiene o establece el factor de carga máximo del contenedor. El factor de carga máximo es el número mayor de elementos que pueden estar en cualquier cubo antes de que crezca la tabla interna del contenedor.
float max_load_factor() const;
void max_load_factor(float _Newmax);
Parámetros
_Newmax
Valor devuelto
La primera función miembro devuelve el factor de carga máxima almacenado. La segunda función miembro no devuelve un valor, pero produce una excepción out_of_range si el factor de carga proporcionado no es válido.
max_size
Devuelve el tamaño máximo del contenedor simultáneo, determinado por el asignador. Este método es seguro para simultaneidad.
size_type max_size() const;
Valor devuelto
Número máximo de elementos que se pueden insertar en este contenedor simultáneo.
Comentarios
Este valor de límite superior puede ser más alto que lo que en realidad puede contener el contenedor.
operator=
Asigna el contenido de otro objeto concurrent_unordered_multimap
a este. Este método no es seguro para la simultaneidad.
concurrent_unordered_multimap& operator= (const concurrent_unordered_multimap& _Umap);
concurrent_unordered_multimap& operator= (concurrent_unordered_multimap&& _Umap);
Parámetros
_Umap
Objeto concurrent_unordered_multimap
de origen.
Valor devuelto
La referencia a este objeto concurrent_unordered_multimap
.
Comentarios
Después de borrar los elementos existentes de un mapa múltiple desordenado simultáneo, operator=
copia o mueve el contenido de _Umap
a un mapa múltiple desordenado simultáneo.
rehash
Recompila la tabla hash.
void rehash(size_type _Buckets);
Parámetros
_Buckets
Número deseado de cubos.
Comentarios
La función miembro modifica el número de depósitos para que sea al menos _Buckets
y vuelve a generar la tabla hash según sea necesario. El número de cubos debe ser una potencia de 2. Si no es una potencia de 2, se redondeará a la siguiente potencia más grande de 2.
Produce una excepción out_of_range si el número de cubos no es válido (ya sea 0 o mayor que el número máximo de cubos).
size
Devuelve el número de elementos de este contenedor simultáneo. Este método es seguro para simultaneidad.
size_type size() const;
Valor devuelto
Número de elementos del contenedor.
Comentarios
En presencia de inserciones simultáneas, el número de elementos del contenedor simultáneo puede cambiar inmediatamente después de llamar a esta función, antes de que se lea el valor devuelto.
swap
Intercambia el contenido de dos objetos concurrent_unordered_multimap
. Este método no es seguro para la simultaneidad.
void swap(concurrent_unordered_multimap& _Umap);
Parámetros
_Umap
Objeto concurrent_unordered_multimap
que se va a intercambiar.
unsafe_begin
Devuelve un iterador al primer elemento de este contenedor para un cubo específico.
local_iterator unsafe_begin(size_type _Bucket);
const_local_iterator unsafe_begin(size_type _Bucket) const;
Parámetros
_Bucket
Índice del cubo.
Valor devuelto
Iterador que apunta al principio del cubo.
unsafe_bucket
Devuelve el índice del cubo al que se asigna una clave específica en este contenedor.
size_type unsafe_bucket(const key_type& KVal) const;
Parámetros
KVal
Clave de elemento que se busca.
Valor devuelto
Índice de cubo de la clave de este contenedor.
unsafe_bucket_count
Devuelve el número actual de cubos de en contenedor.
size_type unsafe_bucket_count() const;
Valor devuelto
Número actual de cubos en este contenedor.
unsafe_bucket_size
Devuelve el número de elementos de un cubo específico de este contenedor.
size_type unsafe_bucket_size(size_type _Bucket);
Parámetros
_Bucket
Cubo que se va a buscar.
Valor devuelto
Número actual de cubos en este contenedor.
unsafe_cbegin
Devuelve un iterador al primer elemento de este contenedor para un cubo específico.
const_local_iterator unsafe_cbegin(size_type _Bucket) const;
Parámetros
_Bucket
Índice del cubo.
Valor devuelto
Iterador que apunta al principio del cubo.
unsafe_cend
Devuelve un iterador a la ubicación que sigue al último elemento de un cubo concreto.
const_local_iterator unsafe_cend(size_type _Bucket) const;
Parámetros
_Bucket
Índice del cubo.
Valor devuelto
Iterador que apunta al principio del cubo.
unsafe_end
Devuelve un iterador al último elemento de este contenedor para un cubo específico.
local_iterator unsafe_end(size_type _Bucket);
const_local_iterator unsafe_end(size_type _Bucket) const;
Parámetros
_Bucket
Índice del cubo.
Valor devuelto
Iterador que apunta al final del cubo.
unsafe_erase
Quita los elementos de concurrent_unordered_multimap
en las posiciones especificadas. Este método no es seguro para la simultaneidad.
iterator unsafe_erase(
const_iterator _Where);
size_type unsafe_erase(
const key_type& KVal);
iterator unsafe_erase(
const_iterator first,
const_iterator last);
Parámetros
_Where
La posición del iterador en la que borrar.
KVal
Valor de clave que se va a borrar.
first
last
Iteradores.
Valor devuelto
Las dos primeras funciones miembro devuelven un iterador que designa el primer elemento que permanece más allá de los elementos quitados, o concurrent_unordered_multimap::end
() si no existe ese elemento. La tercera función miembro devuelve el número de elementos que se quitan.
Comentarios
La primera función miembro elimina el elemento de la secuencia controlada a la que apunta _Where
. La segunda función miembro quita los elementos del intervalo [ _Begin
, _End
).
La tercera función miembro elimina los elementos del intervalo delimitado por concurrent_unordered_multimap::equal_range
(KVal).
unsafe_max_bucket_count
Devuelve el número máximo de cubos de este contenedor.
size_type unsafe_max_bucket_count() const;
Valor devuelto
Número máximo de cubos de este contenedor.
Consulte también
concurrency (espacio de nombres)
Contenedores y objetos paralelos