std::multimap
| Definido en el archivo de encabezado <map>
|
||
template< class Key, class T, class Compare = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>> > class multimap; |
(1) | |
namespace pmr { template< class Key, class T, class Compare = std::less<Key> > using multimap = std::multimap<Key, T, Compare, std::pmr::polymorphic_allocator<std::pair<const Key, T>>>; } |
(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, unstd::multimapit_lyit_r, iteradores desreferenciables am, conit_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.
Parámetros de plantilla
| Esta sección está incompleta Razón: Agregar descripciones de los parámetros de plantilla. |
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. |
Clases miembro
Compara objetos de tipo value_type. (clase) |
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) | |
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) |
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. |
Ejemplo
| Esta sección está incompleta Razón: sin ejemplo |
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 Keysea ConstruiblePorCopia. |
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) |