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) |