std::multiset
es un contenedor asociativo que contiene un conjunto ordenado de objetos de tipo Key. A diferencia de set, se permiten múltiples claves con valores equivalentes. La ordenación se realiza utilizando la función de comparación de claves Compare. Las operaciones de búsqueda, inserción y eliminación tienen complejidad logarítmica.
En todas partes donde la biblioteca estándar utiliza los
Compare
requisitos, la equivalencia se determina utilizando la relación de equivalencia como se describe en
Compare
. En términos imprecisos, dos objetos
a
y
b
se consideran equivalentes si ninguno es menor que el otro:
!
comp
(
a, b
)
&&
!
comp
(
b, a
)
.
El orden de los elementos que se comparan como equivalentes es el orden de inserción y no cambia.
Todas las funciones miembro de
std::multiset
son
constexpr
: es posible crear y utilizar objetos
std::multiset
en la evaluación de una expresión constante.
Sin embargo, los objetos
std::multiset
generalmente no pueden ser
constexpr
, porque cualquier almacenamiento asignado dinámicamente debe liberarse en la misma evaluación de la expresión constante.
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
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.