std:: multimap
|
Definido en el encabezado
<map>
|
||
|
template
<
class
Key,
|
(1) | |
|
namespace
pmr
{
template
<
|
(2) | (desde C++17) |
std::multimap
es un contenedor asociativo que contiene una lista ordenada de pares clave-valor, permitiendo múltiples entradas con la misma clave. La ordenación se realiza según la función de comparación
Compare
, aplicada a las claves. Las operaciones de búsqueda, inserción y eliminación tienen complejidad logarítmica.
Los iteradores de
std::multimap
iteran en orden no descendente de claves, donde no descendente se define por la comparación que se utilizó para la construcción. Es decir, dado
-
m
, un
std::multimap - it_l y it_r , iteradores dereferenciables a m , con it_l < it_r .
m. value_comp ( ) ( * it_r, * it_l ) == false (de menor a mayor si se utiliza la comparación predeterminada).
|
El orden de los pares clave-valor cuyas claves son equivalentes en la comparación es el orden de inserción y no cambia. |
(since C++11) |
En todas partes donde la biblioteca estándar utiliza los Compare requisitos, la equivalencia se determina utilizando la relación de equivalencia como se describe en Compare . En términos imprecisos, dos objetos a y b se consideran equivalentes si ninguno es menor que el otro: ! comp ( a, b ) && ! comp ( b, a ) .
std::multimap
cumple con los requisitos de
Container
,
AllocatorAwareContainer
,
AssociativeContainer
y
ReversibleContainer
.
Todas las funciones miembro de
std::multimap
son
constexpr
: es posible crear y utilizar objetos
std::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 ) | ||||
key_compare
|
Compare
|
||||
allocator_type
|
Allocator
|
||||
reference
|
value_type & | ||||
const_reference
|
const value_type & | ||||
pointer
|
|
||||
const_pointer
|
|
||||
iterator
|
LegacyBidirectionalIterator
y
ConstexprIterator
(desde C++26)
a
value_type
|
||||
const_iterator
|
LegacyBidirectionalIterator y ConstexprIterator (desde C++26) a const value_type | ||||
reverse_iterator
|
std:: reverse_iterator < iterator > | ||||
const_reverse_iterator
|
std:: reverse_iterator < const_iterator > | ||||
node_type
(desde C++17)
|
una especialización de node handle que representa un nodo del contenedor |
Clases miembro
compara objetos de tipo
value_type
(clase) |
Funciones miembro
construye el
multimap
(función miembro pública) |
|
destruye el
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 |
|
|
(C++11)
|
devuelve un iterador al inicio
(función miembro pública) |
|
(C++11)
|
devuelve un iterador al final
(función miembro pública) |
|
(C++11)
|
devuelve un iterador inverso al inicio
(función miembro pública) |
|
(C++11)
|
devuelve un iterador inverso 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) |
|
(C++11)
|
construye el elemento en el lugar
(función miembro pública) |
|
(C++11)
|
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)
|
verifica si el contenedor contiene un elemento con 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) |
|
|
devuelve un iterador al primer elemento
no menor
que la clave dada
(función miembro pública) |
|
|
devuelve un iterador al primer elemento
mayor
que la clave dada
(función miembro pública) |
|
Observadores |
|
|
devuelve la función que compara claves
(función miembro pública) |
|
devuelve la función que compara claves en objetos de tipo
value_type
(función miembro pública) |
|
Funciones no miembro
|
(eliminado en C++20)
(eliminado en C++20)
(eliminado en C++20)
(eliminado en C++20)
(eliminado en C++20)
(C++20)
|
compara lexicográficamente los valores de dos
multimap
s
(plantilla de función) |
|
especializa el algoritmo
std::swap
(plantilla de función) |
|
|
(C++20)
|
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 | Estándar | Característica |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Construcción e inserción de rangos para contenedores |
__cpp_lib_constexpr_map
|
202502L
|
(C++26) |
constexpr
std::multimap
|
Ejemplo
|
Esta sección está incompleta
Motivo: 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 230 | C++98 |
Key
no requería ser
CopyConstructible
(una clave de tipo
Key
podría no poder ser construida)
|
Key
también requiere
ser CopyConstructible |
Véase también
|
colección de pares clave-valor, ordenados por claves, las claves son únicas
(class template) |
|
|
(C++11)
|
colección de pares clave-valor, distribuidos mediante hash por claves
(class template) |
|
(C++23)
|
adapta dos contenedores para proporcionar una colección de pares clave-valor, ordenados por claves
(class template) |