Namespaces
Variants

std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>:: unordered_multimap

From cppreference.net

(1)
unordered_multimap ( )
: unordered_multimap ( size_type ( /* no especificado */ ) ) { }
(desde C++11)
(hasta C++20)
unordered_multimap ( ) ;
(desde C++20)
explicit unordered_multimap ( size_type bucket_count,

const Hash & hash = Hash ( ) ,
const key_equal & equal = key_equal ( ) ,

const Allocator & alloc = Allocator ( ) ) ;
(2) (desde C++11)
unordered_multimap ( size_type bucket_count,

const Allocator & alloc )

: unordered_multimap ( bucket_count, Hash ( ) , key_equal ( ) , alloc ) { }
(3) (desde C++14)
unordered_multimap ( size_type bucket_count,

const Hash & hash,
const Allocator & alloc )

: unordered_multimap ( bucket_count, hash, key_equal ( ) , alloc ) { }
(4) (desde C++14)
explicit unordered_multimap ( const Allocator & alloc ) ;
(5) (desde C++11)
template < class InputIt >

unordered_multimap ( InputIt first, InputIt last,
size_type bucket_count = /* no especificado */ ,
const Hash & hash = Hash ( ) ,
const key_equal & equal = key_equal ( ) ,

const Allocator & alloc = Allocator ( ) ) ;
(6) (desde C++11)
template < class InputIt >

unordered_multimap ( InputIt first, InputIt last,
size_type bucket_count,
const Allocator & alloc )
: unordered_multimap ( first, last,

bucket_count, Hash ( ) , key_equal ( ) , alloc ) { }
(7) (desde C++14)
template < class InputIt >

unordered_multimap ( InputIt first, InputIt last,
size_type bucket_count,
const Hash & hash,
const Allocator & alloc )
: unordered_multimap ( first, last,

bucket_count, hash, key_equal ( ) , alloc ) { }
(8) (desde C++14)
unordered_multimap ( const unordered_multimap & other ) ;
(9) (desde C++11)
unordered_multimap ( const unordered_multimap & other, const Allocator & alloc ) ;
(10) (desde C++11)
unordered_multimap ( unordered_multimap && other ) ;
(11) (desde C++11)
unordered_multimap ( unordered_multimap && other, const Allocator & alloc ) ;
(12) (desde C++11)
unordered_multimap ( std:: initializer_list < value_type > init,

size_type bucket_count = /* no especificado */ ,
const Hash & hash = Hash ( ) ,
const key_equal & equal = key_equal ( ) ,

const Allocator & alloc = Allocator ( ) ) ;
(13) (desde C++11)
unordered_multimap ( std:: initializer_list < value_type > init,

size_type bucket_count,
const Allocator & alloc )
: unordered_multimap ( init, bucket_count,

Hash ( ) , key_equal ( ) , alloc ) { }
(14) (desde C++14)
unordered_multimap ( std:: initializer_list < value_type > init,

size_type bucket_count,
const Hash & hash,
const Allocator & alloc )
: unordered_multimap ( init, bucket_count,

hash, key_equal ( ) , alloc ) { }
(15) (desde C++14)
template < container-compatible-range < value_type > R >

unordered_multimap ( std:: from_range_t , R && rg,
size_type bucket_count = /* ver descripción */ ,
const Hash & hash = Hash ( ) ,
const key_equal & equal = key_equal ( ) ,

const Allocator & alloc = Allocator ( ) ) ;
(16) (desde C++23)
template < container-compatible-range < value_type > R >

unordered_multimap ( std:: from_range_t , R && rg,
size_type bucket_count,
const Allocator & alloc )
: unordered_multimap ( std:: from_range , std:: forward < R > ( rg ) ,

bucket_count, Hash ( ) , key_equal ( ) , alloc ) { }
(17) (desde C++23)
template < container-compatible-range < value_type > R >

unordered_multimap ( std:: from_range_t , R && rg,
size_type bucket_count,
const Hash & hash,
const Alloc & alloc )
: unordered_multimap ( std:: from_range , std:: forward < R > ( rg ) ,

bucket_count, hash, key_equal ( ) , alloc ) { }
(18) (desde C++23)

Construye un nuevo contenedor a partir de diversas fuentes de datos. Opcionalmente utiliza el bucket_count proporcionado por el usuario como número mínimo de buckets a crear, hash como función hash, equal como función para comparar claves y alloc como asignador.

1-5) Construye un contenedor vacío. Establece max_load_factor() a 1.0 . Para el constructor por defecto, el número de buckets no está especificado.
6-8) Construye el contenedor con los contenidos del rango [ first , last ) . Establece max_load_factor() a 1.0 .
9,10) Constructor de copia. Construye el contenedor con la copia de los contenidos de other , copia el factor de carga, el predicado y la función hash también. Si alloc no se proporciona, el asignador se obtiene llamando a std:: allocator_traits < allocator_type > :: select_on_container_copy_construction ( other. get_allocator ( ) ) .

El parámetro de plantilla Allocator solo se deduce del primer argumento cuando se utiliza en deducción de argumentos de plantilla de clase .

(desde C++23)
11,12) Constructor de movimiento . Construye el contenedor con los contenidos de other usando semántica de movimiento. Si alloc no es proporcionado, el asignador se obtiene mediante construcción por movimiento del asignador perteneciente a other .

El parámetro de plantilla Allocator solo se deduce del primer argumento cuando se usa en deducción de argumentos de plantilla de clase .

(desde C++23)
13-15) Constructor de lista de inicialización . Construye el contenedor con el contenido de la lista de inicialización init , igual que unordered_multimap ( init. begin ( ) , init. end ( ) ) .
16-18) Construye el contenedor con el contenido de rg .

Contenidos

Parámetros

alloc - asignador a utilizar para todas las asignaciones de memoria de este contenedor
bucket_count - número mínimo de cubos a utilizar en la inicialización. Si no se especifica, se utiliza un valor predeterminado no especificado
hash - función hash a utilizar
equal - función de comparación a utilizar para todas las comparaciones de claves de este contenedor
first, last - el par de iteradores que define el rango fuente de elementos a copiar
rg - un rango compatible con contenedor , es decir, un input_range cuyos elementos son convertibles a value_type
other - otro contenedor que se utilizará como fuente para inicializar los elementos del contenedor
init - lista de inicialización para inicializar los elementos del contenedor
Requisitos de tipo
-
InputIt debe cumplir con los requisitos de LegacyInputIterator .

Complejidad

1-5) Constante.
6-8) Caso promedio lineal (es decir, O(N) , donde N es std:: distance ( first, last ) ), caso peor cuadrático, es decir, O(N 2 ) .
9,10) Lineal en el tamaño de other .
11,12) Constante. Si alloc es proporcionado y alloc ! = other. get_allocator ( ) , entonces lineal.
13-15) Caso promedio O(N) ( N es std:: size ( init ) ), caso peor O(N 2 ) .
16-18) Caso promedio O(N) ( N es ranges:: distance ( rg ) ), caso peor O(N 2 ) .

Excepciones

Las llamadas a Allocator::allocate pueden lanzar excepciones.

Notas

After container move construction (overload ( 11,12 ) ), references, pointers, and iterators (other than the end iterator) to otro remain valid, but refer to elements that are now in * this . The current standard makes this guarantee via the blanket statement in [container.reqmts]/67 , and a more direct guarantee is under consideration via Problema LWG 2321 .

Aunque no es formalmente requerido hasta C++23, algunas implementaciones ya han colocado el parámetro de plantilla Allocator en contextos no deducidos en modos anteriores.

Macro de prueba de características Valor Estándar Característica
__cpp_lib_containers_ranges 202202L (C++23) Construcción e inserción conscientes de rangos; sobrecargas ( 16-18 )

Ejemplo

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 2193 C++11 el constructor por defecto ( 1 ) era explícito hecho no explícito
LWG 2230 C++11 la semántica de la sobrecarga ( 13 ) no estaba especificada especificada

Véase también

asigna valores al contenedor
(función miembro pública)