std:: unordered_multimap
|
Definido en el encabezado
<unordered_map>
|
||
|
template
<
class
Key,
|
(1) | (desde C++11) |
|
namespace
pmr
{
template
<
|
(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
|
(since C++26) |
Contenidos |
Parámetros de plantilla
|
Esta sección está incompleta
Razón: Añadir descripciones de los 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) |
|
|
(C++23)
|
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
|
Esta sección está incompleta
Razón: sin 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
|
(C++11)
|
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) |
|
|
(C++23)
|
adapta dos contenedores para proporcionar una colección de pares clave-valor, ordenados por claves
(class template) |