std:: flat_multimap
|
Definido en el encabezado
<flat_map>
|
||
|
template
<
class
Key,
|
(desde C++23) | |
El flat multimap es un
container adaptor
que proporciona la funcionalidad de un contenedor asociativo que contiene pares clave-valor, permitiendo múltiples entradas con el mismo valor de clave. Las claves se ordenan utilizando la función de comparación
Compare
.
La plantilla de clase
flat_multimap
actúa como un contenedor envolvente para los dos contenedores subyacentes, pasados como objetos de tipo
KeyContainer
y
MappedContainer
respectivamente. El primer contenedor está ordenado, y para cada clave su valor correspondiente se encuentra en el segundo contenedor en el mismo índice (desplazamiento). El número de elementos en ambos contenedores es el mismo.
En todas partes donde la biblioteca estándar utiliza los Compare requisitos, la unicidad se determina utilizando la relación de equivalencia. Informalmente, dos objetos a y b se consideran equivalentes si ninguno es menor que el otro: ! comp ( a, b ) && ! comp ( b, a ) .
std::flat_multimap
cumple con los requisitos de
Container
,
ReversibleContainer
,
requisitos opcionales de contenedor
, y todos los requisitos de
AssociativeContainer
(incluyendo complejidad de búsqueda logarítmica), excepto que:
- los requisitos relacionados con nodos no son aplicables,
- los requisitos de invalidación de iteradores difieren,
- la complejidad de las operaciones de inserción y borrado es lineal.
Un multimapa plano admite la mayoría de las operaciones de AssociativeContainer que utilizan claves iguales.
Todas las funciones miembro de
std::flat_multimap
son
constexpr
: es posible crear y utilizar objetos
std::flat_multimap
en la evaluación de una expresión constante.
Sin embargo, los objetos
|
(since C++26) |
Contenidos |
Invalidación de iteradores
| Esta sección está incompleta |
Parámetros de plantilla
| Key | - |
El tipo de las claves. El programa está mal formado si
Key
no es del mismo tipo que
KeyContainer::value_type
.
|
| T | - |
El tipo de los valores mapeados. El programa está mal formado si
T
no es del mismo tipo que
MappedContainer::value_type
.
|
| Compare | - | Un tipo Compare que proporciona un ordenamiento débil estricto. |
|
KeyContainer
MappedContainer |
- |
Los tipos de los
SequenceContainer
subyacentes para almacenar claves y valores mapeados respectivamente. Los iteradores de dichos contenedores deben satisfacer
LegacyRandomAccessIterator
o modelar
random_access_iterator
. Las invocaciones de sus funciones miembro
size
y
max_size
no deben salir mediante una excepción.
Los contenedores estándar std::vector y std::deque cumplen con estos requisitos. |
Tipos de miembros
| Tipo | Definición |
key_container_type
|
KeyContainer
|
mapped_container_type
|
MappedContainer
|
key_type
|
Key
|
mapped_type
|
T
|
value_type
|
std:: pair < key_type, mapped_type > |
key_compare
|
Compare
|
reference
|
std:: pair < const key_type & , mapped_type & > |
const_reference
|
std:: pair < const key_type & , const mapped_type & > |
size_type
|
std::size_t |
difference_type
|
std::ptrdiff_t |
iterator
|
definido por la implementación
LegacyInputIterator
,
ConstexprIterator
(desde C++26)
y
random_access_iterator
a
value_type
|
const_iterator
|
definido por la implementación
LegacyInputIterator
,
ConstexprIterator
(desde C++26)
y
random_access_iterator
a
const
value_type
|
reverse_iterator
|
std:: reverse_iterator < iterator > |
const_reverse_iterator
|
std:: reverse_iterator < const_iterator > |
containers
|
tipo que describe los contenedores subyacentes
struct
containers
|
Clases miembro
compara objetos de tipo
value_type
(clase) |
Objetos miembro
| Miembro | Descripción |
containers
c
(privado)
|
los contenedores adaptados
( objeto miembro solo para exposición* ) |
key_compare
compare
(privado)
|
el objeto función de comparación
( objeto miembro solo para exposición* ) |
Funciones miembro
construye el
flat_multimap
(función miembro pública) |
|
|
(destructor)
(implicitly declared)
|
destruye cada elemento del adaptador de contenedor
(función miembro pública) |
|
asigna valores al adaptador de contenedor
(función miembro pública) |
|
Iteradores |
|
|
devuelve un iterador al inicio
(función miembro pública) |
|
|
devuelve un iterador al final
(función miembro pública) |
|
|
devuelve un iterador inverso al principio
(función miembro pública) |
|
|
devuelve un iterador inverso al final
(función miembro pública) |
|
Capacidad |
|
|
comprueba si el adaptador de 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 |
|
|
construye el elemento in situ
(función miembro pública) |
|
|
construye elementos in-situ usando una pista
(función miembro pública) |
|
|
inserta elementos
(función miembro pública) |
|
|
inserta un rango de elementos
(función miembro pública) |
|
|
extrae los contenedores subyacentes
(función miembro pública) |
|
|
reemplaza los contenedores subyacentes
(función miembro pública) |
|
|
elimina elementos
(función miembro pública) |
|
|
intercambia los contenidos
(función miembro pública) |
|
|
borra el contenido
(función miembro pública) |
|
Búsqueda |
|
|
encuentra elemento con clave específica
(función miembro pública) |
|
|
devuelve el número de elementos que coinciden con una clave específica
(función miembro pública) |
|
|
verifica si el contenedor contiene un elemento con 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) |
|
|
devuelve el rango de elementos que coinciden con una clave específica
(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) |
|
|
acceso directo al contenedor subyacente de claves
(función miembro pública) |
|
|
acceso directo al contenedor de valores subyacente
(función miembro pública) |
|
Funciones no miembro
|
(C++23)
|
compara lexicográficamente los valores de dos
flat_multimap
s
(plantilla de función) |
|
(C++23)
|
especializa el algoritmo
std::swap
(plantilla de función) |
|
(C++23)
|
borra todos los elementos que cumplen criterios específicos
(plantilla de función) |
Clases auxiliares
|
especializa el rasgo de tipo
std::uses_allocator
(especialización de plantilla de clase) |
Etiquetas
|
indica que los elementos de un rango están ordenados (no se requiere unicidad)
(etiqueta) |
Guías de deducción
Notas
Los tipos miembro
iterator
y
const_iterator
pueden ser alias del mismo tipo. Esto significa que definir un par de sobrecargas de funciones usando los dos tipos como tipos de parámetro puede violar la
One Definition Rule
. Dado que
iterator
es convertible a
const_iterator
, una única función con un
const_iterator
como tipo de parámetro funcionará en su lugar.
| Macro de prueba de características | Valor | Estándar | Característica |
|---|---|---|---|
__cpp_lib_flat_map
|
202207L
|
(C++23) |
std::flat_map
y
std::flat_multimap
|
__cpp_lib_constexpr_flat_map
|
202502L
|
(C++26) |
constexpr
std::flat_multimap
|
Ejemplo
|
Esta sección está incompleta
Razón: sin ejemplo |
Véase también
|
(C++23)
|
adapta dos contenedores para proporcionar una colección de pares clave-valor, ordenados por claves únicas
(plantilla de clase) |
|
colección de pares clave-valor, ordenados por claves
(plantilla de clase) |
|
|
(C++11)
|
colección de pares clave-valor, dispersos por claves
(plantilla de clase) |