Namespaces
Variants

std:: unordered_multimap

From cppreference.net
Definido en el encabezado <unordered_map>
template <

class Key,
class T,
class Hash = std:: hash < Key > ,
class KeyEqual = std:: equal_to < Key > ,
class Allocator = std:: allocator < std:: pair < const Key, T >>

> class unordered_multimap ;
(1) (desde C++11)
namespace pmr {

template <
class Key,
class T,
class Hash = std:: hash < Key > ,
class Pred = std:: equal_to < Key >
> using unordered_multimap =
std :: unordered_multimap < Key, T, Hash, Pred,
std:: pmr :: polymorphic_allocator < std:: pair < const Key, T >>> ;

}
(2) (desde C++17)

std::unordered_multimap es un contenedor asociativo no ordenado que admite claves equivalentes (un unordered_multimap puede contener múltiples copias de cada valor de clave) y que asocia valores de otro tipo con las claves. La clase unordered_multimap admite iteradores hacia adelante. La búsqueda, inserción y eliminación tienen complejidad de tiempo promedio constante.

Internamente, los elementos no están ordenados en ningún orden particular, sino organizados en buckets. En qué bucket se coloca un elemento depende completamente del hash de su clave. Esto permite un acceso rápido a elementos individuales, ya que una vez calculado el hash, este se refiere al bucket exacto donde está colocado el elemento.

El orden de iteración de este contenedor no está garantizado que sea estable (por lo tanto, por ejemplo, std::equal no puede usarse para comparar dos std::unordered_multimap s), excepto que cada grupo de elementos cuyas claves se comparan equivalentes (se comparan iguales con key_eq() como comparador) forma un subrango contiguo en el orden de iteración, también accesible con equal_range() .

std::unordered_multimap cumple con los requisitos de Container , AllocatorAwareContainer , UnorderedAssociativeContainer .

Todas las funciones miembro de std::unordered_multimap son constexpr : es posible crear y utilizar objetos std::unordered_multimap en la evaluación de una expresión constante.

Sin embargo, los objetos std::unordered_multimap generalmente no pueden ser constexpr , porque cualquier almacenamiento asignado dinámicamente debe liberarse en la misma evaluación de la expresión constante.

(since C++26)

Contenidos

Parámetros de plantilla

Tipos de miembros

Tipo Definición
key_type Key
mapped_type T
value_type std:: pair < const Key, T >
size_type Tipo entero sin signo (normalmente std::size_t )
difference_type Tipo entero con signo (normalmente std::ptrdiff_t )
hasher Hash
key_equal KeyEqual
allocator_type Allocator
reference value_type &
const_reference const value_type &
pointer std:: allocator_traits < Allocator > :: pointer
const_pointer std:: allocator_traits < Allocator > :: const_pointer
iterator LegacyForwardIterator y ConstexprIterator (desde C++26) a value_type
const_iterator LegacyForwardIterator y ConstexprIterator (desde C++26) a const value_type
local_iterator Un tipo iterador cuya categoría, valor, diferencia, puntero y
tipos de referencia son iguales a iterator . Este iterador
puede usarse para iterar a través de un solo bucket pero no entre buckets
const_local_iterator Un tipo iterador cuya categoría, valor, diferencia, puntero y
tipos de referencia son iguales a const_iterator . Este iterador
puede usarse para iterar a través de un solo bucket pero no entre buckets
node_type (desde C++17) una especialización de node handle que representa un nodo del contenedor

Funciones miembro

construye el unordered_multimap
(función miembro pública)
destruye el unordered_multimap
(función miembro pública)
asigna valores al contenedor
(función miembro pública)
devuelve el asignador asociado
(función miembro pública)
Iteradores
devuelve un iterador al inicio
(función miembro pública)
devuelve un iterador al final
(función miembro pública)
Capacidad
comprueba si el contenedor está vacío
(función miembro pública)
devuelve el número de elementos
(función miembro pública)
devuelve el número máximo posible de elementos
(función miembro pública)
Modificadores
limpia el contenido
(función miembro pública)
inserta elementos o nodos (desde C++17)
(función miembro pública)
inserta un rango de elementos
(función miembro pública)
construye elementos in-situ
(función miembro pública)
construye elementos in-situ usando una pista
(función miembro pública)
elimina elementos
(función miembro pública)
intercambia los contenidos
(función miembro pública)
(C++17)
extrae nodos del contenedor
(función miembro pública)
(C++17)
empalma nodos de otro contenedor
(función miembro pública)
Búsqueda
devuelve el número de elementos que coinciden con una clave específica
(función miembro pública)
encuentra elemento con clave específica
(función miembro pública)
(C++20)
comprueba si el contenedor contiene un elemento con una clave específica
(función miembro pública)
devuelve el rango de elementos que coinciden con una clave específica
(función miembro pública)
Interfaz de Bucket
devuelve un iterador al inicio del bucket especificado
(función miembro pública)
devuelve un iterador al final del bucket especificado
(función miembro pública)
devuelve el número de buckets
(función miembro pública)
devuelve el número máximo de buckets
(función miembro pública)
devuelve el número de elementos en un bucket específico
(función miembro pública)
devuelve el cubo para una clave específica
(función miembro pública)
Política de hash
devuelve el número promedio de elementos por bucket
(función miembro pública)
gestiona el número máximo promedio de elementos por bucket
(función miembro pública)
reserva al menos el número especificado de buckets y regenera la tabla hash
(función miembro pública)
reserva espacio para al menos el número especificado de elementos y regenera la tabla hash
(función miembro pública)
Observadores
devuelve la función utilizada para hashear las claves
(función miembro pública)
devuelve la función utilizada para comparar claves para igualdad
(función miembro pública)

Funciones no miembro

(C++11) (C++11) (eliminado en C++20)
compara los valores en el unordered_multimap
(plantilla de función)
especializa el algoritmo std::swap
(plantilla de función)
elimina todos los elementos que cumplen criterios específicos
(plantilla de función)

Guías de deducción

(desde C++17)

Notas

Macro de prueba de características Valor Std Característica
__cpp_lib_containers_ranges 202202L (C++23) Construcción e inserción de rangos para contenedores
__cpp_lib_constexpr_unordered_map 202502L (C++26) constexpr std::unordered_multimap

Ejemplo

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 2050 C++11 las definiciones de reference , const_reference , pointer
y const_pointer se basaban en allocator_type
basadas en value_type y
std::allocator_traits

Véase también

colección de pares clave-valor, dispersados por claves, las claves son únicas
(class template)
colección de pares clave-valor, ordenados por claves
(class template)
adapta dos contenedores para proporcionar una colección de pares clave-valor, ordenados por claves
(class template)