std::multiset
| Definido en el archivo de encabezado <set>
|
||
template< class Key, class Compare = std::less<Key>, class Allocator = std::allocator<Key> > class multiset; |
(1) | |
namespace pmr { template< class Key, class Compare = std::less<Key> > using multiset = std::multiset<Key, Compare, std::pmr::polymorphic_allocator<Key>>; } |
(2) | (desde C++17) |
std::multiset es un contenedor asociativo que contiene un conjunto ordenado de claves de tipo Key. A diferencia std::set, se permiten varias claves con valores equivalentes. El ordenamiento se realiza mediante la función de comparación de claves Compare. Las operaciones de búsqueda, inserción y eliminación tienen una complejidad logarítmica.
Dondequiera que la biblioteca estándar use los requisitos 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 consideran equivalentes si ninguno se compara menor que el otro: !comp(a, b) && !comp(b, a).
|
El orden de los elementos que se comparan equivalentes es el orden de inserción y no cambia. |
(desde C++11) |
std::multiset cumple con los requisitos de Contenedor, ContenedorConscienteDeAsignador, ContenedorAsociativo y ContenedorReversible.
Parámetros de plantilla
| Esta sección está incompleta Razón: Agregar descripciones de los parámetros de plantilla. |
Tipos miembro
| Tipo miembro | Definición |
key_type
|
Key
|
value_type
|
Key
|
size_type
|
Tipo entero sin signo (por lo general std::size_t) |
difference_type
|
Tipo entero con signo (por lo general std::ptrdiff_t) |
key_compare
|
Compare
|
value_compare
|
Compare
|
allocator_type
|
Allocator
|
reference
|
Allocator::reference (hasta C++11)value_type& (desde C++11)
|
const_reference
|
Allocator::const_reference (hasta C++11)const value_type& (desde C++11)
|
pointer
|
Allocator::pointer (hasta C++11)std::allocator_traits<Allocator>::pointer (desde C++11)
|
const_pointer
|
Allocator::const_pointer (hasta C++11)std::allocator_traits<Allocator>::const_pointer (desde C++11)
|
iterator
|
IteradorBidireccionalLegado constante |
const_iterator
|
IteradorBidireccionalLegado constante |
reverse_iterator
|
std::reverse_iterator<iterator>
|
const_reverse_iterator
|
std::reverse_iterator<const_iterator>
|
node_type (desde C++17)
|
Una especialización de node handle que representa un nodo del contenedor. |
Funciones miembro
Construye el contenedor multiset. (función miembro pública) | |
Destruye el contenedor multiset. (función miembro pública) | |
| Asigna valores al contenedor. (función miembro pública) | |
| Devuelve el asignador de memoria asociado. (función miembro pública) | |
Iteradores | |
(C++11) |
Devuelve un iterador al principio. (función miembro pública) |
(C++11) |
Devuelve un iterador al final. (función miembro pública) |
(C++11) |
Devuelve un iterador inverso al principio. (función miembro pública) |
(C++11) |
Devuelve un iterador inverso al final. (función miembro pública) |
Capacidad | |
| Comprueba si el 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 | |
| Borra el contenido. (función miembro pública) | |
| Inserta elementos o nodos (desde C++17) (función miembro pública) | |
(C++23) |
Inserta un rango de elementos. (función miembro pública) |
(C++11) |
Construye el elemento en el sitio. (función miembro pública) |
(C++11) |
Construye elementos en el sitio utilizando una pista. (función miembro pública) |
| Borra elementos (función miembro pública) | |
| Intercambia el contenido. (función miembro pública) | |
(C++17) |
Extrae nodos del contenedor (función miembro pública) |
(C++17) |
Mueve los nodos de otro contenedor. (función miembro pública) |
Búsqueda | |
| Devuelve el número de elementos que coinciden con una clave específica. (función miembro pública) | |
| Encuentra un elemento con una clave específica. (función miembro pública) | |
(C++20) |
Comprueba si el contenedor contiene un elemento con una clave específica. (función miembro pública) |
| Devuelve un rango de elementos que coinciden con una clase 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) | |
Observadores | |
| Devuelve la función que compara las claves. (función miembro pública) | |
Devuelve la función que compara las claves en objetos de tipo value_type. (función miembro pública) | |
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 multiset. (plantilla de función) |
| Especializa el algoritmo std::swap. (plantilla de función) | |
(C++20) |
Borra todos los elementos que satisfacen un criterio específico. (plantilla de función) |
Guías de deducción |
(desde C++17) |
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 utilizando los dos tipos como tipos de parámetro puede violar la Regla de una definición (ODR). Dado que iterator es convertible a const_iterator, una sola función con un const_iterator como tipo de parámetro funcionará en su lugar.
| Macro de prueba de característica | Valor | Estándar | Comentario |
|---|---|---|---|
__cpp_lib_containers_ranges |
202202L |
(C++23) | Construcción e inserción de rangos para contenedores. |
Ejemplo
| Esta sección está incompleta Razón: sin ejemplo |
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 103 | C++98 | El iterador permite la modificación de claves. | El iterador se hizo constante. |
| 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 Keysea ConstruiblePorCopia. |
Véase también
| Colección de claves, ordenada por claves, donde las claves son únicas. (plantilla de clase) | |
(desde C++11) |
Colección de claves, dispersos (hashed) por claves. (plantilla de clase) |
(C++23) |
Adapta un contenedor para que proporcione una colección de claves, ordenada por clave. (plantilla de clase) |