std::multimap
Definido en el archivo de 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, al tiempo que permite múltiples entradas con la misma clave. El ordenamiento se realiza de acuerdo con la función de comparación Compare
, aplicada a las claves. Las operaciones de búsqueda, inserción y eliminación tienen una complejidad logarítmica.
Los iteradores de std::multimap
iteran en orden no descendente de claves, donde el orden 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 desreferenciables 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 por defecto).
El orden de los pares clave-valor cuyas claves se comparan de manera equivalente es el orden de inserción y no cambia. |
(desde C++11) |
Dondequiera que la biblioteca estándar use los requerimientos de Comparar, la equivalencia se determina usando la relación de equivalencia como se describe en Comparar. En términos imprecisos, dos objetos a
y b
se consideran equivalentes si ninguno se compara menor que el otro: !comp(a, b) && !comp(b, a)
.
std::multimap
cumple con los requerimientos de Contenedor, ContenedorConscienteDeAsignador, ContenedorAsociativo y ContenedorReversible.
Contenido |
[editar] Parámetros de plantilla
Esta sección está incompleta Razón: Agregar descripciones de los parámetros de plantilla. |
[editar] Tipos miembro
Tipo miembro | Definición |
key_type
|
Key
|
mapped_type
|
T
|
value_type
|
std::pair<const Key, T> |
size_type
|
Tipo entero sin signo (por lo general std::size_t) |
difference_type
|
Tipo entero con signo (por lo general std::ptrdiff_t) |
key_compare
|
Compare
|
allocator_type
|
Allocator
|
reference
|
Allocator::reference (hasta C++11)value_type& (desde C++11)
|
const_reference
|
Allocator::const_reference (hasta C++11)const value_type& (desde C++11)
|
pointer
|
Allocator::pointer (hasta C++11)std::allocator_traits<Allocator>::pointer (desde C++11) |
const_pointer
|
Allocator::const_pointer (hasta C++11) std::allocator_traits<Allocator>::const_pointer (desde C++11) |
iterator
|
IteradorBidireccionalLegado |
const_iterator
|
IteradorBidireccionalLegado constante |
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. |
[editar] Clases miembro
Compara objetos de tipo value_type . (clase) |
[editar] Funciones miembro
Construye el contenedor multimap . (función miembro pública) | |
Destruye el contenedor multimap . (función miembro pública) | |
Asigna valores al contenedor. (función miembro pública) | |
Devuelve el asignador de memoria asociado. (función miembro pública) | |
Iteradores | |
(C++11) |
Devuelve un iterador al principio. (función miembro pública) |
(C++11) |
Devuelve un iterador al final. (función miembro pública) |
(C++11) |
Devuelve un iterador inverso al principio. (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 | |
Borra 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 sitio. (función miembro pública) |
(C++11) |
Construye elementos en el sitio utilizando una pista. (función miembro pública) |
Borra elementos (función miembro pública) | |
Intercambia el contenido. (función miembro pública) | |
(C++17) |
Extrae nodos del contenedor (función miembro pública) |
(C++17) |
Mueve los 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 un elemento con una 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 un rango de elementos que coinciden con una clase 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 las claves. (función miembro pública) | |
Devuelve la función que compara las claves en objetos de tipo value_type . (función miembro pública) |
[editar] 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 multimap. (plantilla de función) |
Especializa el algoritmo std::swap. (plantilla de función) | |
(C++20) |
Borra todos los elementos que satisfacen un criterio específico. (plantilla de función) |
Guías de deducción |
(desde C++17) |
[editar] Notas
Macro de prueba de característica | Valor | Estándar | Comentario |
---|---|---|---|
__cpp_lib_containers_ranges |
202202L | (C++23) | Construcción e inserción de rangos para contenedores. |
[editar] Ejemplo
Esta sección está incompleta Razón: sin ejemplo |
[editar] Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
---|---|---|---|
LWG 230 | C++98 | No se requería que Key fuera ConstruiblePorCopia(una clave de tipo Key podría no ser capaz de construirse.)
|
También se requiere que Key sea ConstruiblePorCopia. |
[editar] Véase también
Colección de pares de clave y valor, ordenados por claves, donde las claves son únicas. (plantilla de clase) | |
(desde C++11) |
Colección de pares de clave-valor, dispersos (hashed) por clave. (plantilla de clase) |
(C++23) |
Adapta dos contenedores para proporcionar una colección de pares clave-valor, ordenados por claves. (plantilla de clase) |