std::unordered_multiset
es un contenedor asociativo que contiene un conjunto de objetos posiblemente no únicos de tipo Key. La búsqueda, inserción y eliminación tienen una complejidad de tiempo promedio constante.
Internamente, los elementos no están ordenados en ningún orden particular, sino organizados en buckets. En qué bucket se coloca un elemento depende completamente del hash de su valor. Esto permite un acceso rápido a elementos individuales, ya que una vez calculado el hash, este hace referencia al bucket exacto donde está colocado el elemento.
El orden de iteración de este contenedor no está garantizado que sea estable (por lo tanto, por ejemplo,
std::equal
no puede usarse para comparar dos
std::unordered_multiset
s), excepto que cada grupo de elementos cuyas claves se comparan
equivalentes
(se comparan iguales con
key_eq()
como comparador) forma un subrango contiguo en el orden de iteración, también accesible mediante
equal_range()
.
Todas las funciones miembro de
std::unordered_multiset
son
constexpr
: es posible crear y utilizar objetos
std::unordered_multiset
en la evaluación de una expresión constante.
Sin embargo, los objetos
std::unordered_multiset
generalmente no pueden ser
constexpr
, porque cualquier almacenamiento asignado dinámicamente debe liberarse en la misma evaluación de la expresión constante.
un tipo de iterador cuya categoría, valor, diferencia, puntero y tipos de referencia son los mismos que iterator. Este iterador se puede usar para iterar a través de un único depósito pero no entre depósitos
const_local_iterator
un tipo de iterador cuya categoría, valor, diferencia, puntero y tipos de referencia son los mismos que const_iterator. Este iterador se puede usar para iterar a través de un único depósito pero no entre depósitos
node_type(desde C++17)
una especialización de node handle que representa un nodo contenedor
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.