Espacios de nombres
Variantes
Acciones

std::multimap

De cppreference.com
< cpp‎ | container
 
 
 
 
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, 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

[editar]Tipos miembro

Tipo miembro Definición
key_typeKey[editar]
mapped_typeT[editar]
value_typestd::pair<const Key, T>[editar]
size_type Tipo entero sin signo (por lo general std::size_t) [editar]
difference_type Tipo entero con signo (por lo general std::ptrdiff_t) [editar]
key_compareCompare[editar]
allocator_typeAllocator[editar]
referenceAllocator::reference(hasta C++11)
value_type&(desde C++11)[editar]
const_referenceAllocator::const_reference(hasta C++11)
const value_type&(desde C++11)[editar]
pointerAllocator::pointer(hasta C++11)
std::allocator_traits<Allocator>::pointer(desde C++11)[editar]
const_pointerAllocator::const_pointer(hasta C++11)
std::allocator_traits<Allocator>::const_pointer(desde C++11)[editar]
iteratorIteradorBidireccionalLegado[editar]
const_iteratorIteradorBidireccionalLegado constante [editar]
reverse_iteratorstd::reverse_iterator<iterator>[editar]
const_reverse_iteratorstd::reverse_iterator<const_iterator>[editar]
node_type(desde C++17) Una especialización de node handle que representa un nodo del contenedor. [editar]

[editar]Clases miembro

Compara objetos de tipo value_type.
(clase)[editar]

[editar]Funciones miembro

Construye el contenedor multimap.
(función miembro pública)[editar]
Destruye el contenedor multimap.
(función miembro pública)[editar]
Asigna valores al contenedor.
(función miembro pública)[editar]
Devuelve el asignador de memoria asociado.
(función miembro pública)[editar]
Iteradores
Devuelve un iterador al principio.
(función miembro pública)[editar]
(C++11)
Devuelve un iterador al final.
(función miembro pública)[editar]
Devuelve un iterador inverso al principio.
(función miembro pública)[editar]
(C++11)
Devuelve un iterador inverso al final.
(función miembro pública)[editar]
Capacidad
Comprueba si el contenedor está vacío.
(función miembro pública)[editar]
Devuelve el número de elementos.
(función miembro pública)[editar]
Devuelve el número máximo posible de elementos.
(función miembro pública)[editar]
Modificadores
Borra el contenido.
(función miembro pública)[editar]
Inserta elementos o nodos(desde C++17)
(función miembro pública)[editar]
Inserta un rango de elementos.
(función miembro pública)[editar]
(C++11)
Construye el elemento en el sitio.
(función miembro pública)[editar]
Construye elementos en el sitio utilizando una pista.
(función miembro pública)[editar]
Borra elementos
(función miembro pública)[editar]
Intercambia el contenido.
(función miembro pública)[editar]
(C++17)
Extrae nodos del contenedor
(función miembro pública)[editar]
(C++17)
Mueve los nodos de otro contenedor.
(función miembro pública)[editar]
Búsqueda
Devuelve el número de elementos que coinciden con una clave específica.
(función miembro pública)[editar]
Encuentra un elemento con una clave específica.
(función miembro pública)[editar]
(C++20)
Comprueba si el contenedor contiene un elemento con una clave específica.
(función miembro pública)[editar]
Devuelve un rango de elementos que coinciden con una clase específica.
(función miembro pública)[editar]
Devuelve un iterador al primer elemento no menor que la clave dada.
(función miembro pública)[editar]
Devuelve un iterador al primer elemento mayor que la clave dada.
(función miembro pública)[editar]
Observadores
Devuelve la función que compara las claves.
(función miembro pública)[editar]
Devuelve la función que compara las claves en objetos de tipo value_type.
(función miembro pública)[editar]

[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)[editar]
Especializa el algoritmo std::swap.
(plantilla de función)[editar]
Borra todos los elementos que satisfacen un criterio específico.
(plantilla de función)[editar]

Guías de deducción

(desde C++17)

[editar]Notas

Macro de prueba de característicaValorEstándarComentario
__cpp_lib_containers_ranges202202L(C++23)Construcción e inserción de rangos para contenedores.

[editar]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)[editar]
(desde C++11)
Colección de pares de clave-valor, dispersos (hashed) por clave.
(plantilla de clase)[editar]
Adapta dos contenedores para proporcionar una colección de pares clave-valor, ordenados por claves.
(plantilla de clase)[editar]
close