std:: flat_multiset
|
Definido en el encabezado
<flat_set>
|
||
|
template
<
class
Key,
|
(desde C++23) | |
El multiconjunto plano es un
adaptador de contenedor
que proporciona la funcionalidad de un contenedor asociativo que almacena un conjunto ordenado de objetos de tipo
Key
. A diferencia de
std::flat_set
, se permiten múltiples claves con valores equivalentes. La ordenación se realiza utilizando la función de comparación de claves
Compare
.
La plantilla de clase
flat_multiset
actúa como un contenedor envolvente para el contenedor subyacente ordenado que se pasa como objeto de tipo
KeyContainer
.
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_multiset
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 multiconjunto plano admite la mayoría de AssociativeContainer operaciones que utilizan claves iguales.
Todas las funciones miembro de
std::flat_multiset
son
constexpr
: es posible crear y utilizar objetos
std::flat_multiset
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 los elementos almacenados. El programa está mal formado si
Key
no es del mismo tipo que
KeyContainer::value_type
.
|
| Compare | - | Un tipo Compare que proporciona un ordenamiento débil estricto. |
| KeyContainer | - |
El tipo del
SequenceContainer
subyacente para almacenar los elementos. Los iteradores de dicho contenedor deben satisfacer
LegacyRandomAccessIterator
o modelar
random_access_iterator
.
Los contenedores estándar std::vector y std::deque cumplen con estos requisitos. |
Tipos de miembros
| Tipo | Definición |
container_type
|
Key
Container
|
key_type
|
Key
|
value_type
|
Key
|
key_compare
|
Compare
|
value_compare
|
Compare
|
reference
|
value_type & |
const_reference
|
const value_type & |
size_type
|
typename KeyContainer :: size_type |
difference_type
|
typename KeyContainer :: difference_type |
iterator
|
definido por la implementación
LegacyRandomAccessIterator
,
ConstexprIterator
(desde C++26)
y
random_access_iterator
a
value_type
|
const_iterator
|
definido por la implementación
LegacyRandomAccessIterator
,
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 > |
Objetos miembro
| Miembro | Descripción |
container_type
c
(privado)
|
el contenedor adaptado
( 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_multiset
(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 el contenedor subyacente
(función miembro pública) |
|
|
reemplaza el contenedor subyacente
(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) |
|
Funciones no miembro
|
(C++23)
|
compara lexicográficamente los valores de dos
flat_multiset
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 función usando los dos tipos como tipos de parámetro puede violar la
Regla de Una Definición
. 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_set
|
202207L
|
(C++23) |
std::flat_set
y
std::flat_multiset
|
__cpp_lib_constexpr_flat_set
|
202502L
|
(C++26) |
constexpr
std::flat_multiset
|
Ejemplo
|
Esta sección está incompleta
Razón: sin ejemplo |
Véase también
|
(C++23)
|
adapta un contenedor para proporcionar una colección de claves únicas, ordenadas por claves
(plantilla de clase) |
|
colección de claves, ordenadas por claves
(plantilla de clase) |
|
|
(C++11)
|
colección de claves, dispersadas por claves
(plantilla de clase) |